我正在尝试在iOS中以编程方式将自定义类名设置到storyboard。
我有一个带有viewcontroller MyFirstViewController
的故事板,并将类名设置为MyFirstViewController
现在我创建了另一个扩展SecondViewController
MyFirstViewController
SecondViewController *vcsecond = (SecondViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"MyFirstViewController"];
[self.navigationController pushViewController:vcsecond animated:YES];
当我运行此应用时,我的SecondViewController viewDidLoad
方法无法调用,它会调用MyFirstViewController
viewDidLoad方法。
我将vcsecond
作为MyFirstViewController
的对象。
请帮助我如何使用SecondViewController
XIB打开MyFirstViewController
。
我只想继承MyFirstViewController
到SecondViewController
的所有功能,并在此处覆盖某些方法,并在覆盖方法中执行一些具有附加功能的新代码。
两个viewcontroller的设计是相同的,只使用重写方法添加一些新功能。
在上面的屏幕中,TabSearchForDocViewController是我的MyFirstViewController控制器。
所以我的实际问题是----------
我有两个视图控制器的comman故事板页面。我的SecondViewController扩展了MyFirstViewController。现在我想使用comman storyboard页面打开我的SecondViewController。是否可以通过编程方式设置类名?
答案 0 :(得分:0)
我不认为他作为你的标识符" MyFirstViewController"是可行的。保存对MyFirstViewController类的引用,并始终加载此类的头文件。 所以我不认为vcsecond会以这种方式为你加载。
答案 1 :(得分:0)
instantiateViewControllerWithIdentifier
将始终返回故事板中相应场景中指定的类的实例 - 您无法在运行时覆盖此实例。
我建议你创造一个“瘦身”的对象。对象,它是您在故事板场景中指定的类。然后,您可以使用委派模式创建实现视图控制器功能的其他对象类(使用继承)。然后,您可以在运行时实例化相应的委托实例。