• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - presentViewController 和 pushViewController 之间的不同结果

[复制链接]
菜鸟教程小白 发表于 2022-12-12 12:32:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

对于在两次尝试以编程方式实例化和打开新 View 之间看到的不同结果,我感到有些困惑。我有一个由 NSTimer 回调调用的方法(尽管我认为这不是那么相关),它尝试分配和初始化第二个 View Controller ,并将其推送到堆栈上(我可能有我的命名法离开那里,对不起)。

查看 ViewController 编程指南和这里的一些答案,我确定了两个潜在的解决方案,它们都可以正常构建和运行,但我得到不同的结果,这两个都不能完全工作。

第一个使用 presentViewController 方法。它看起来像这样:

SecondViewController *secondView = [[SecondViewController alloc] init];
[self presentViewController:secondView animated:YES completion:NULL];

...从某种意义上说,它确实有效。我在 SecondViewController 类的 viewDidLoad 方法中放置了一个 NSLog,它会打印出来。如果我还在那里以编程方式设置 UIColor,则屏幕颜色。但是,我在 Storyboard 中放置在此 VC View 上的任何内容都不会显示 - 如果我不以编程方式为 View 着色,则屏幕为黑色。

我尝试的第二种方法是因为我认为代码没有正确连接到我的 Storyboard(这是一种旧方法,仍然适用于 XIB 的 afaik)。它看起来像这样:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName"MainStoryboard_iPhone" bundle:nil];
SecondViewController *secondView = (SecondViewController *)
[storyboard instantiateViewControllerWithIdentifier"secondView"];
[self.navigationController pushViewController:secondView animated:YES];

...但 viewDidLoad 和界面似乎都没有响应/被调用。

我还查看了一个 prepareForSegue 方法,但我不确定它是否会有所作为,因为我很确定我缺少一些东西......

我应该注意到我已经在 Identity Inspector 下设置了 ViewController 的 Storyboard ID。

如果有人能解释我的问题的直接解决方案和/或我遇到的问题的更大解释,那将不胜感激。

~杰西



Best Answer-推荐答案


使用presentViewController的第一个解决方案/问题,创建和演示都很好,但 Storyboard根本不涉及。如果您在代码中创建 View 内容(如颜色),或者如果 init 方法加载了 NIB 或其他内容,那么一切都会很好。

第二种方法看起来应该可以,所以可能是 Storyboard 的名称错误,标识符的名称错误,或者 navigationController 为 nil。

prepareForSegue 方法只会在 segue 由用户交互触发(其中 segue 在 Storyboard中配置)或专门从代码触发的 segue 时调用。

通常,您希望主要使用一种形式来创建 View 转换。如果您使用的是 Storyboard,那么通常是在 Storyboard中配置的 segues 并链接到 UI 项。然后,您将在“源” View Controller 中实现 prepareForSegue 以传递“目标” View Controller 所需的任何附加信息。你应该通过 this guide .

关于iphone - presentViewController 和 pushViewController 之间的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17637126/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap