2016-07-30 72 views
0

好吧,首先让我们命名的东西:iOS的 - 推到一个视图控制器,是不是在故事板

我有我的根视图控制器至极表视图,我们称之为“HomeViewController”。在该表中查看每个单元格点击会推动不同的视图控制器。我们称之为“DetailViewControllers”的视图控制器的这个集合。

我完全知道我可以通过在didSelectRowAtIndexPath方法内以编程方式加载和推送每个DetailViewController来完成此工作。我想用故事板和原型单元做一些不同的事情,但我没有成功,所以我在寻找一些建议,因为我不太熟悉故事板和细节。

我试图在这里实现的行为是: 我会从我的HomeViewController中的表视图中的原型单元格的segue。 segue推动一个“基础”视图控制器,每一个DetailViewController都从其继承。这些视图控制器在故事板中也没有分配的视图控制器。

在prepareForSegue方法中,我想将'destinationViewController'转换为'right'类。该应用程序崩溃在这一点上说:“无法将类型'BaseTestViewController'的值转换为'TestViewController'”。这是完全可以理解的。

所以,我的问题是:有没有办法让这样的工作?

+0

你是说你想推到视图控制器,甚至不存在故事板? –

+0

@JLT是的,正好。这甚至有可能吗? “ – Bienemann

回答

0

您不能以编程方式创建segues。如果没有故事板,则不存在细分。您可以通过加载nib文件来推送到视图控制器。

下面是你如何做到这一点。

比方说,您有一个包含视图控制器主视图视图布局的nib文件。例如,我们将其命名为“测试”。

  1. 转到该nib文件,单击文件的所有者。 enter image description here

  2. 将类更改为您的视图控制器的名称。在我的情况下,我将其命名为ViewController。

enter image description here

  • 右键单击文件的所有者。将视图控制器视图的出口链接到nib文件中的视图。

  • 然后在你想过渡到视图控制器视图控制器,你做这样的:

    的UIViewController *控制器= [[UIViewController的页头] initWithNibName:@ “测试” 捆绑:一个NSBundle mainBundle ]];

    [self presentViewController:controller animated:YES completion:nil];

  • 它将以模态方式呈现视图控制器。

    如果您嵌入导航控制器,那么你可以做这样的:

    [self.navigationController pushViewController:controller animated:YES]; 
    

    希望它能帮助。

    +0

    这是一个耻辱,能够动态地创建故事板中的segues和元素将提供很大的灵活性。我知道如何做到这一点,“正常的方式”,但无论如何感谢这个例子。我接受你的答案,因为你是唯一一个告诉我我不能以编程方式创建segues的人。 – Bienemann

    0

    没有故事板segue试试这个样子。

    let objDestVC = self.storyboard.instantiateViewControllerWithIdentifier("DestVCStroyboardId") as! DestinationViewController 
    self.navigationController?.pushViewController(objDestVC, animated: true) 
    
    +0

    ”我完全知道我可以通过在didSelectRowAtIndexPath方法中以编程方式加载和推送每个DetailViewController来完成这项工作,我想做一些不同的事情(...)“ ”所以,我的问题是:是一种让赛车像这样工作的方法?“ 无论如何。 – Bienemann

    相关问题