【发布时间】:2015-06-20 21:02:14
【问题描述】:
我有一个UITableView 作为UIViewController 的子视图。 viewController UI 通过故事板进行管理。根据需要将委托和数据源设置为viewController。
我有以下代码:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (updateType == Profile) {
return 15;
}
else {
return 6;
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 1;
}
上述两个方法被完全调用。调用[self.tableview reloadData] 会导致再次调用方法。令人费解的是,- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 从未被调用过。永远。
数据源和委托在代码中设置,其中self.tableview 是情节提要中UITableView 的IBOutlet:
self.tableview.delegate = self;
self.tableview.dataSource = self;
找到答案
我正在使用带有自动布局的情节提要。问题是尽管故事板的其余部分设置为 wAny hAny,但尺寸设置为 wRegular hRegular。只需切换它就可以了!我知道这很荒谬,但这仍然是一个答案。
【问题讨论】:
-
尝试在代码中设置委托和数据源,看看是否有帮助。
-
另外,这里的stackoverflow.com/questions/24698313/… 是这个函数不能被调用的非常有趣的例子。检查一下。
-
感谢 Oleshko - 委托和数据源已在代码中设置。我尝试了重新限制的建议,但没有任何区别。
-
嗯...尝试完全删除 cellForRowAtIndexPath 方法,看看您是否会收到一些警告,表明此方法未实现。
-
我最初尝试过,看看是否有一些隐藏的异常/问题,但 cellForRowAtIndexPath 是否存在没有区别
标签: ios objective-c uitableview uiviewcontroller