2011-05-19 85 views
1

我创建了一个名为ListCell的类,它是UITableViewCell的一个子类。这样我就可以轻松地在视图中添加更多内容,如图像,标签等,而不是在cellForRowAtIndexPath内编码。我已经添加了一个标签来显示单元格中的地址。我有另一个类,从NSObject继承,以保存该地址。地址是来自Web服务的字符串。我正在使用以下代码从名为Itemsforcell的类中获取地址。UITableViewCell选择问题

- (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

也许,如果您显示的是从Web服务获取URL的图像,则需要花费时间加载。如果您等待几秒钟然后点击它,请检查是否发生这种情况。如果是这样,建议你去异步图像。 – Nitish 2011-05-19 04:40:56

+1

没有Nitish我没有显示图像。但是我会使用你的建议,当我将有一种情况使用Web服务中的图像 – 2011-05-19 09:11:01

回答

2

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