从indexpath获取nill UITableviewcell

时间:2015-08-27 14:09:23

标签: ios iphone uitableview

我正在使用UITableviewcell,检查我的下面的代码。

  int random = arc4random() % arr.count;                                     
  NSInteger index = [[arr objectAtIndex:random-1] integerValue];
  NSIndexPath *path = [NSIndexPath indexPathForRow:index inSection:0];
  SongListCell *cell2 = (SongListCell *)[table_view cellForRowAtIndexPath:path];
  • 获取nill cell。

有什么不对?我做错了什么?

3 个答案:

答案 0 :(得分:0)

如果单元格不可见或索引路径超出范围

,方法cellForRowAtIndexPath:将返回nil

答案 1 :(得分:0)

我不确定你想要实现的目标,但我认为你的代码的第二行可能不应该存在。那可能吗?不应该是:

  int random = arc4random() % arr.count;                                     
  NSIndexPath *path = [NSIndexPath indexPathForRow:random-1 inSection:0];
  SongListCell *cell2 = (SongListCell *)[table_view cellForRowAtIndexPath:path];

因为否则,您取决于arr中的值而不仅仅是arr中的对象数量,并且这些值可能包含无效索引(或者甚至可能包含非数字索引)。

如果情况并非如此,您能否提供arr的值示例?

答案 2 :(得分:0)

如果单元格为零,您应自行创建单元格,或者在viewDidLoad中或在适当的情况下,您可以调用其中一种方法使tableview为您创建单元格。

[self.tableView registerClass:<#(__unsafe_unretained Class)#> forCellReuseIdentifier:<#(NSString *)#>]
[self.tableView registerNib:<#(UINib *)#> forCellReuseIdentifier:<#(NSString *)#>]