我创建了一个名为ListCell
的类,它是UITableViewCell
的子类。这样我可以轻松地在视图中添加更多内容,例如图像,标签等,而不是在cellForRowAtIndexPath
内编码。我添加了一个标签来显示单元格中的地址。我有另一个继承自NSObject
的类来保存该地址。地址是来自Web服务的字符串。我使用以下代码从名为Itemsforcell
的类中获取地址。
- (UITableViewCell *)tableView:(UITableView *)cellTableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"CellIdentifier";
ListCell *cell = (ListCell *)[tableView dequeueReusableCellWithIdentifier: cellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ListCell" owner:self options:nil];
cell = (ListCell *)[nib objectAtIndex:1];
}
NSUInteger row = [indexPath row];
Itemsforcell *items = [self.Itemsforcell objectAtIndex:row];
cell.address.text = items.address;
return cell;
}
我的问题是,有时我的单元格只有在第二次单击后才会被选中。所有细胞都不会发生这种情况。它随机发生在任何细胞上,有时它不会发生。我不知道我哪里出错了。请任何机构建议我解决这个奇怪的问题。谢谢你们所有人。
答案 0 :(得分:2)
最有可能的是,你通过下载该字符串来阻止主线程。 您永远不应该在主线程上执行网络活动。将其旋转到自己的线程,当它完成时,更改主线程上的UI。