好的,首先让我们说出一些事情:
我的根视图控制器中有一个表视图,我们将调用" HomeViewController"。在该表视图中,每个单元格抽头将推送不同的视图控制器。这个视图控制器集合我们将调用" DetailViewControllers"。
我完全知道我可以通过在didSelectRowAtIndexPath方法中以编程方式加载和推送每个DetailViewControllers来完成这项工作。我想做一些不同的事情,而不是使用故事板和原型单元,而我没有成功,所以我正在寻找一些建议,因为我不太精通故事板和细分。
我试图在这里实现的行为是: 我在HomeViewController的表视图中有一个原型单元格的segue。那个segue推动了一个" base"视图控制器,每个DetailViewController都从该控制器继承。这些视图控制器在故事板中也没有指定的视图控制器。
在prepareForSegue方法中,我想要转换' destinationViewController'到了'对''类。该应用程序在此时崩溃说它"无法转换类型' BaseTestViewController'到' TestViewController'。"。这完全可以理解。
所以,我的问题是:有没有办法让segue像那样工作?
答案 0 :(得分:0)
尝试没有故事板segue。
let objDestVC = self.storyboard.instantiateViewControllerWithIdentifier("DestVCStroyboardId") as! DestinationViewController
self.navigationController?.pushViewController(objDestVC, animated: true)
答案 1 :(得分:0)
您不能以编程方式创建segues。没有故事板就不存在Segues。您可以通过加载nib文件来推送到视图控制器。
这是你如何做到的。
假设您有一个nib文件,其中包含视图控制器主视图的视图布局。我们将其命名为“Test”。
将类更改为视图控制器的名称。就我而言,我把它命名为ViewController。
右键单击文件的所有者。将视图控制器视图的出口链接到nib文件中的视图。
然后在要转换到该视图控制器的视图控制器中,执行以下操作:
UIViewController * controller = [[UIViewController alloc] initWithNibName:@“Test”bundle:[NSBundle mainBundle]];
[self presentViewController:controller animated:YES completion:nil];
它将以模态方式显示视图控制器。
如果您要嵌入导航控制器,那么您可以这样做:
[self.navigationController pushViewController:controller animated:YES];
希望它有所帮助。