2011-07-24 8 views
1

セルを作成した後、どのようにしてセルのインデックスパスを取得できますか?私はuniq cell.tagを設定する必要があります。どのように私はそれを行うことができます他のアイデア?UITablieViewCellのindexPathを取得する

- (UITableViewCell *)tableView:(UITableView *)tableView cellForManagedObject:(NSManagedObject *)managedObject 
{ 
    ConditionCell *cell = (ConditionCell *)[tableView dequeueReusableCellWithIdentifier:[ConditionCell reuseIdentifier]]; 

    if (nil == cell) 
    { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ConditionCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } else 
    { 
     // Reset Image 
     cell.img.image = nil; 
    } 

理由は、私はそれはUIViewのがあるので、おそらく問題は、あなたがメインスレッドではない、それを呼び出している別のthred

[condition processImageDataWithBlock:^(NSData *imageData) { 
      if (self.view.window) { 
       if (cell.tag == [self.tableView indexPathForCell:cell].row) 
       { 
        NSLog(@"%@",cell.tag); 
        UIImage *image = [UIImage imageWithData:imageData]; 
        [condition writeToFile:imageData]; 
        if (image) 
        { 
         cell.img.image = image; 
         [cell.activityIndicator stopAnimating]; 
         [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[self.tableView indexPathForCell:cell]] withRowAnimation:UITableViewRowAnimationNone]; 
        } 
        [condition release]; 
       } 
      } 
     }]; 
+4

これはあなた自身の質問に答えません - [self.tableView indexPathForCell:cell]? –

+0

私はgladyが答えとして上記のコメントを受け入れるだろう。 @トムフォビア。 –

+0

そうです。しかし、それは動作しません。常にnilを返します。 – Chris

答えて

1

でセルを見つける必要がある - これを試してみてください。

- (void)someMethodToStartAsync 
{ 
    UITableViewCell *cell = however your getting your cell; 
    NSAssert(cell, @"cell was nil"); 
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 

    [condition processImageDataWithBlock:^(NSData *imageData) { 
     // do something with indexPath 
    } 
} 

ブロック内で使用するとindexPathがコピーになるので、初期化した値をブロック外に反映させたい場合は、次のように宣言します。

_block NSIndexPath *indexPath = whatever; 
+0

ヒントをありがとう。私は別の解決策を見つけました。各セルの内容がユニークなので、これをタグとして使用します。問題は、その時点でテーブルが描画されていないことでした。だからそれまでにインデックスパスを知ることができませんでした。 – Chris

+0

@Chris私はちょうど推測していた:-x –

+0

あなたの助けをとってくれてありがとう! – Chris

関連する問題