解决方案:
解决方案是首先正确地从 UITableView 开始,然后将 UITableView 委托添加到 UIViewController,如所选答案中所述。
前言:我几乎阅读了所有关于此事的文章,但没有任何建议有帮助。
我将 UITableViewController 的 UITableView 嵌入到 UIViewController 中。
我知道除非渲染视图,否则不会调用任何内容,所以我渲染它,我可以使用 NSLog 来显示它命中了这些方法。
我尝试在 InterfaceBuilder 中制作一个 UITableViewController 并将我的子类设置为它的自定义类,它有效!但这不是我需要做的。这是我收集/完成的内容:
- 我正在使用 InterfaceBuilder 来管理 UIViewController 但我正在以编程方式添加 UITableView
- 委托和数据源都设置正确并且 self.tableView 不是 nil
- 尽管记录有效,但从未调用 cellForRowAtIndexPath 并且呈现的 UITableView 为空白
- 我将代表添加到我的控制器中,但没有改变任何东西
我在 UITableViewController 上设置了以下内容:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
NSLog(@"%@", self.questions); // This outputs the questions array as not empty and works
// As you can see I am also returning 1.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"%d", [self.questions count]); // This outputs 4 as it should
return [self.questions count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// All we need to focus on is this NSLog which never outputs
NSLog(@"Was called and array is, %@" self.questions);
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
return cell;
}
我尝试了多种方式设置视图:直接添加 UITableViewController,添加 UITableViewController 的 UITableView(这似乎是正确的方法),但没有任何效果。
也许在使用 InterfaceBuilder 时我忘记了一个重要步骤,或者我忘记了一些随机的事情。任何帮助,将不胜感激。谢谢!
** 更新 ** 这是我添加 UiTableViewController 或 UITavleView 的方法
GTTableViewController *tvc = [[GTTableViewController alloc] initWithStyle:UITableViewStylePlain];
// Either
[self.view addSubview:tvc.view];
// OR
[self.view addSubview:tvc.tableView];
// Just to make sure everything is still ok.. and I see the 2/3 TV methods fire.
[self.tableView reloadData];