从iPad应用程序中的代码调用segue时,显示View Controller时出现问题。
我通过使用
从一个视图控制器拖动到另一个视图控制器,在IB中设置了segue标识符: viewDocumentSegue ,样式:模态,演示文稿:默认,转换:默认
然后我使用
从第一个视图控制器调用segue[self performSegueWithIdentifier:@"viewDocumentSegue" sender:nil];
并使用
将变量传递给第二个视图控制器- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
UIViewController *destination = segue.destinationViewController;
if ([destination respondsToSelector:@selector(setFileURL:)]) {
[destination setValue:fileName forKey:@"fileURL"];
}
}
第二个视图控制器确实已加载,因为我在控制台中显示 viewDidLoad viewWillAppear 和 viewDidAppear 中的NSLog,但没有显示任何内容。
我认为第二个视图控制器的视图位于视图中的某个位置。但是我如何强迫它到顶部?
修改
这是界面的截图(有些东西需要涂黑)。我添加了一些解释结构的注释。希望它会有所帮助。
(我无法上传图片所以这里是链接) http://www.linfoots.com/Screenshot.jpg
有什么建议吗?
谢谢,
理查德
答案 0 :(得分:2)
您没有提供我要求的其他信息,因此无法详细回答您的问题。我建议你做的是用一个只有两个视图控制器来创建一个全新的项目。以相同的方式在故事板中连接它们。你会发现你想要做的事实上应该工作得很好。一旦你确信了这一点,你就可以回过头来看看你遇到麻烦的项目有什么不同。
编辑:
好的,谢谢你的屏幕截图。看起来你正在尝试使用与父视图控制器相关的故事板,正如我在第二条评论中所猜测的那样。这并不容易,因为故事板对您的父视图控制器的子项一无所知。使用多个故事板,或者根本没有故事板,你会更开心。
现在我们来讨论使用父视图控制器的问题。你没有问过这个,但它可能是你问题的核心。您正确管理子视图控制器至关重要。请参阅我的书中的讨论:
http://www.apeth.com/iOSBook/ch19.html#_container_view_controllers
你每次必须做这种精心制作的舞蹈,否则事情就不会正确:
当视图控制器成为父视图控制器的子节点时:
当视图控制器停止成为父视图控制器的子节点时:
最后,当您进行模态转换时,父链中的definesPresentationContext
变得至关重要,以便模态视图知道接口中要替换的视图。我书中的这个可下载的例子展示了必要的区别: