到目前为止,我有一个带有UINavigationController和一个TableViewController的Storyboard。 TableViewController是UITableViewController的自定义类,我在故事板上设置了它。 在didFinishLaunching的Appdelegate中,我有以下代码:
NSLog(@"rootviewconroller: %@",self.window.rootViewController);
//CTCAEMainTableViewController *mainViewController = (CTCAEMainTableViewController *)self.window.rootViewController;
UINavigationController *mainNavigationController = (UINavigationController *)self.window.rootViewController;
CTCAEMainTableViewController *mainTableViewController = (CTCAEMainTableViewController *) mainNavigationController.topViewController;
NSLog(@"table: %@",mainTableViewController);
NSLog(@"table: %@",mainTableViewController.testMethod);
CTCAEMainTableViewController是我的自定义UITableViewController。
@interface CTCAEMainTableViewController : UITableViewController
但我得到的只是一个普通的UITableViewController,当我尝试调用我的testMethod时,我得到一个运行时错误:无法识别的选择器被发送到实例。
我还尝试使用NavigationController的viewControllers方法访问TableViewController,然后访问索引0处的对象。同样的事情。 我很困惑,因为在我的故事板中它显示了自定义类。
答案 0 :(得分:0)
您确定在故事板中更改了控制器的子类吗?
请注意,在“自定义类”框中,我已经设置了我的TVC应该是的子类的名称。另外,我通过拖出一个普通的TVC然后设置子类来创建storyboard元素。
答案 1 :(得分:0)
发现了这个问题。我将Storyboard命名为MainStoryboard,这也是Storyboard的默认名称,因此在我的项目中设置故事板似乎不起作用。制作了一个新的故事板,以不同的方式命名,以同样的方式完成所有其他工作。