UITableViewCell选择问题

时间:2011-05-19 04:13:42

标签: objective-c cocoa-touch ios uitableview

我创建了一个名为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;      

}

我的问题是,有时我的单元格只有在第二次单击后才会被选中。所有细胞都不会发生这种情况。它随机发生在任何细胞上,有时它不会发生。我不知道我哪里出错了。请任何机构建议我解决这个奇怪的问题。谢谢你们所有人。

1 个答案:

答案 0 :(得分:2)

最有可能的是,你通过下载该字符串来阻止主线程。 您永远不应该在主线程上执行网络活动。将其旋转到自己的线程,当它完成时,更改主线程上的UI。