我有一个自定义 UIView,MyView,其中有几个 tableviews - tv1 和 tv2 - 都以编程方式添加。
我有一个自定义的 UIViewController,MyController,它在 loadView 上创建了一个 MyView 的实例。
我的目标如下。myView 应该是 myView.tv1 的数据源和委托,因为它不会触及我的数据模型并且是静态的。
myController 应该是 myView.tv2 的委托,因为它的内容将取决于数据源。
我在每个标题中添加了以下内容:
@interface MyController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@interface MyView : UIView <UITableViewDelegate, UITableViewDataSource>
并添加到每个所需的委托方法。
在 MyView 的初始化中,我添加了该表视图,并将第一个的委托设置为 self:
tv1 = [[UITableView alloc] initWithFrame:frame1 style:UITableViewStyleGrouped];
tv1.delegate = self;
tv1.datasource = self;
tv2 = [[UITableView alloc] initWithFrame:frame2 style:UITableViewStyleGrouped];
在我的控制器中,我连接了第二个 tableview:
- (void)loadView{
self.view = [[MyView alloc] initWithFrame:myFrame];
[(MyView *)self.view tv2].delegate = self;
[(MyView *)self.view tv2].dataSource = self;
}
当我运行它时,我得到了一大堆运行时错误。有时它抱怨分页控件,有时抱怨 NSCFArray,有时根本没有文本。它总是崩溃。
我已经确定是设置导致问题的数据源,而不是委托。如果我注释掉 laodView 中的数据源行,它运行良好(但当然没有内容)。
什么可能导致我每次都遇到不同的运行时错误,我可能在哪里出错?