首先,我对iOS开发完全不熟悉,所以我希望有一种更简单的方法。
我正在使用iOS 5故事板来创建动态生成的问题视图。我试图在UIViewController中嵌入一个UITableViewController,这样我就可以定义不同类型的问题,但使用相同的基本模板。代码有效,但是当我尝试选择一个单元格时,didSelectRowAtIndexPath永远不会被触发。我检查了数据源和委托,它们都设置为正确的控制器。我的嵌入代码是:
CGRect questionViewRect = self.QuestionContentView.bounds;
UIViewController<QuestionViewProtocol>* questionView = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:NULL] instantiateViewControllerWithIdentifier:@"MultipleChoiceQuestion"];
[questionView.view setFrame:questionViewRect];
[self.QuestionContentView addSubview:questionView.view];
我再次这样做是因为我非常喜欢故事板,但我想动态地将该表视图更改为其他类型的问题。谢谢你的帮助!
这是我的故事板的截图。我将右侧控制器的视图嵌入到左侧控制器的子视图中。
答案 0 :(得分:0)
所以我明白了。问题是我的子视图的控制器正在一个方法中实例化并分配给一个LOCAL变量。这意味着它没有被保留,所以当表视图稍后尝试访问它时,所有它获得的是一个nil指针。在objective-c中,nil指针的方法只返回nil,因此程序没有崩溃。在我添加了一个指向主控制器类的强指针并将该控制器设置为实例化的子控制器之后,它完美地工作了。