使用 pushViewController 时,我的视图控制器未正确初始化?
Posted
技术标签:
【中文标题】使用 pushViewController 时,我的视图控制器未正确初始化?【英文标题】:My view controller not initializing properly when using pushViewController? 【发布时间】:2014-03-04 20:57:28 【问题描述】:我有以下按钮作为我的 navigationRightBarItem:
UIBarButtonItem *menubutton1 = [[UIBarButtonItem alloc] initWithImage:menuimage1 style:UIBarButtonItemStylePlain target:self action:@selector(toCheckIn)];
和
-(void) toCheckIn
NotificationsViewController *notificationViewController = [[NotificationsViewController alloc]init];
[self.navigationController pushViewController:notificationViewController animated:YES];
我尝试推送的视图控制器(通知控制器)由导航栏、标签和表格组成。当我按下按钮时,视图被推送但不完全。仅显示导航栏和标签,但表格仅显示为黑屏。
还有其他人碰巧遇到同样的事情吗?我该如何解决这个问题?
编辑:表格被拖到情节提要上,而标签和导航栏由代码完成。这可能是个问题吗?
【问题讨论】:
你应该从故事板生成你的 NotificationsViewController。或者更好的是,使用 à segue 【参考方案1】:我认为有几件事会让你朝着正确的方向前进:
似乎您还没有在情节提要中创建从 SourceViewController
到 NotificationsViewController
的转场。对于您正在做的事情,它将极大地简化流程。
要创建一个转场,您只需按住 CTRL 键单击您的SourceViewController
的UIBarButtonItem
并拖动到您的NotificationsViewController
,松开,然后选择 push 作为转场类型。如果您需要将数据传递给NotificationsViewController
,我还会在属性检查器中为这个segue 提供一个标识符,以便以后与prepareForSegue
一起使用。
现在,当您的UIBarButton
被推送时,NotificationsViewController
通过情节提要被实例化,然后被推送到 ViewController 堆栈中。
这也是我相信您没有在视图中看到您的UITableView
的原因,因为如果您只是将它拖到情节提要上并且没有将其设置为NotificationsViewController
的属性,则创建品牌代码中的新实例推送到 ViewController 堆栈将导致它只知道您在代码中添加的子视图。
【讨论】:
以上是关于使用 pushViewController 时,我的视图控制器未正确初始化?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI - 使用“pushViewController”时出现致命错误
在 UITabController 中的选项卡之间切换时使用“pushViewController”动画
使用 NavigationController.PushViewController 的 BeginAnimations 和 CommitAnimations