iPhone,为什么UITableView的reloadData方法没有效果?

5
我附上了屏幕截图以便于跟进。
我已经附加了数据源和代理的输出口,并为我的表视图创建了一个输出口,但是 reloadData 不起作用?
理想情况下,我只想在视图加载一次后调用 reloadData?
2个回答

6
为你的UITableView创建一个属性,并将该属性用作你的IBOutlet,直接使用ivar不是正确的方法。重新连接并进行调试,查看你的UITableView是否为nil。
UITableView数据源方法中设置断点,以查看它们是否被调用,如果是,请检查你的transactionsArray是否实际包含项目。
如果这些都没有帮助,你需要提供更多信息,比如哪些方法被调用以及更多的代码。

当调用reloadData时,请检查您的数组是否实际包含新的/更新的数据。 - ynnckcmprnl
我已经进行了一些调试,数组已经更新,但是在返回视图时cellForRowAtIndexPath没有被调用。就像我所说的那样,它在视图加载时第一次运行,但之后就不再运行了。 - Jules
1
啊,我需要删除 if (cell == nil) {。 - Jules
1
我认为如果我们删除 if(cell == nil) 这个注释,它会导致内存泄漏。因此,只需将修改数据的代码部分移出此 if 循环即可。 - Priyanka V

2
如果你的UITableViewController的主视图就是table view,那么你可以避免使用IBOutlets并且直接使用控制器的tableView属性。如下所示:
[self.tableView reloadData];

好的,我已经改成了self.tableview,我保留了属性和输出口,我需要在IB中连接其他东西吗?另外,看了一些示例,我发现数据源和代理似乎没有被连接,但是在屏幕截图中显示它们已经被连接了。 - Jules
再次查看您的屏幕截图,我发现您在通用UIView中放置了一个UITableView。这可能会导致问题。我建议您将控制器设置为通用UIViewController,并实现TableViewDelegates。视图输出应设置为主UIView,并且(如您所做的那样)应将输出指向UITableView。将参考输出再次设置为您的控制器并重试。 - MaxFish
如果添加了新行,则重新加载tableView,请确保编辑后数据正确更改。 - MaxFish
啊,我需要删除 if (cell == nil) {。 - Jules
我遇到了同样的问题,但是我使用了@property (nonatomic, strong) IBOutlet UITableView *HomeFeedTableView;。 - Piyush

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接