我的应用程序包含三个屏幕,主菜单是根视图,它提供了选择第二个视图的选项。
第二个视图是UITableView,如果选择了表格中的单元格,则第三个视图(详细视图)会加载。
当第三个视图加载时,根视图控制器的'viewDidLoad'中包含的函数被触发,为什么会这样?
我尝试过各种segues(从tableview到详细视图)但结果是一样的,这是我目前的实现:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"nameOfSegue"]) {
UITableViewCell *cell = sender;
NSIndexPath *indexPath = [self.table indexPathForCell:cell];
UINavigationController *navigationController = segue.destinationViewController;
EntryViewController *TitleViewController = (EntryViewController *) navigationController.topViewController;
TitleViewController.entry = [self.fetchedResultsController objectAtIndexPath:indexPath];
}
}
segue本身是否触发了根视图控制器,还是我找错了地方?
答案 0 :(得分:1)
你可能做错了什么。因为我担心viewDidLoad()只在屏幕上呈现视图之前被调用一次。你确定正在调用第一个控制器的viewDidLoad()吗?
或许可以帮助您更多地了解Main.storyboard的屏幕截图,并且控制器的完整代码也很有用。
来自Apple文档:
在视图控制器加载其视图后调用此方法 层次结构到内存。无论是否调用此方法 视图层次结构是从nib文件加载或以编程方式创建的 在loadView方法中。您通常会覆盖此方法以执行 对从nib文件加载的视图进行额外的初始化。
答案 1 :(得分:0)
您使用的是StoryBoard吗?
您可以将第三个viewController的类设置为第一个viewController,以便第三个viewController显示viewDidLoad
时调用。