我有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;
找到答案
我正在使用具有自动布局的故事板。问题是尺寸设置为wRegular hRegular,尽管故事板的其余部分设置为wAny hAny。只需切换它就可以了!荒谬我知道,但它仍然是一个答案。
答案 0 :(得分:1)
在某些情况下,不会调用委托方法。因此,首先通过调试工具检查您的设置,以查看您的设置是否合适,例如检查内存中是否存在表视图,委托和dataSource。如果您的数据源为空,则表视图甚至不会尝试调用哪个不是您的情况,因为您确实返回了某个数字。
通常,这只是程序员根据我之前制作和看到的内容制作的一个小错误。因此,请检查您的代码。你最好发布你的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
也是如此。
来自作者答案的最新消息: 事实证明,在某些大小的类下,表视图是不可见的。这就是 iOS 甚至不会尝试的原因,因为它根本不可见。这不是来自 Apple 的错误,可以通过查看调试来检测。
答案 1 :(得分:1)
我正在使用具有自动布局的故事板。问题是尺寸设置为wRegular hRegular,尽管故事板的其余部分设置为wAny hAny。只需切换它就可以了!荒谬我知道,但它仍然是一个答案!
这有效:
这不是:
这让我疯狂了很长时间,我仍然不完全理解为什么这样做有效但是确实如此。
答案 2 :(得分:0)
您确定您的dataSource和delegate设置为正确的类吗?如果你复制/粘贴,在IB中很容易搞砸。在viewDidAppear方法中放置一个断点,然后在控制台调用
中po self.tableView.dataSource
验证它是否在运行时设置。
答案 3 :(得分:0)
您确定在界面构建器上设置了表视图插座吗?,即self.tableView != nil
答案 4 :(得分:0)
在我的特殊情况下,除了numberOfRowsInSection之外什么都没有被调用,直到我将tableview上的分隔符由于某种原因(由于它设置为none)而将其转换为单行,然后我的heightForRowAtIndexPath被调用,之后我进行了一些自定义大小调整计算在字体名称错误的字体上,使其翻转。不确定这对任何人都有帮助,但这就是发生在我身上的事。