2012-01-27 5 views
0

は私がインスタンスを1つだけ有している、私はcellForRowAtIndexPathトラブルプロパティを設定し、cellForRowAtIndexPathの外側tableviewcellにアクションを実行する:

if ([[cellOrder objectAtIndex:indexPath.section] isEqualToString:@"balanceCell"]) { 

    balanceCell = (BalanceCell *) [tableView dequeueReusableCellWithIdentifier:@"balanceCell"]; 

    if (balanceCell == nil) { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"BalanceCell" owner:self options:nil]; 
     balanceCell = (BalanceCell*) [nib objectAtIndex:0]; 
    } 

    return balanceCell; 
} 

内部私のビューコントローラとinitのヘッダ内へのポインタを作成したカスタムtableviewcellを有しますbalanceCellのテーブルビューでは、私はセルのプロパティを設定したいと思ったら、ただ参照できると仮定しました。balanceCell

しかし、これは機能しません。ユーザーがボタンを押すと、以下のメソッドが呼び出されます(実際に呼び出されていることを確認しました)。しかし、バランスセルと呼ばれるメソッドは機能しません。

- (void)addBalanceCell { 

[cellOrder addObject:@"balanceCell"]; 
[table reloadData]; 

balanceCell.leftEquation = equationCell.leftView.equationOrder; 
balanceCell.rightEquation = equationCell.rightView.equationOrder; 

[balanceCell setUpText]; // not called 

} 

balanceCellを参照する適切な方法は何ですか?

+0

このメソッドをどこで呼び出せばいいのですか? - (void)addBalanceCell ..? – vishy

+0

別のカスタムテーブルビューのセルにボタンがあり、cellForRowAtIndexの@selectorを使用してボタンにメソッドを追加しました – Mahir

+0

テーブルリロードが停止/コメントされたときに呼び出される可能性があります... [テーブルreloadData]行..? – vishy

答えて

0

これはインターフェイスビルダーの方法ではありませんが、データソースとして機能する配列を持つ必要があります。 そのデータソースには、BalanceCellを定義するオブジェクトが含まれている必要があります。 これらのオブジェクトを管理できず、テーブルをリロードすることができない場合は、テーブルを変更することを検討してください。

UITableViewCellは、主にビューとして使用する必要があります。これは、データを表示する手段です。モデルは、別の場所にデータソースとして格納されています。

「addBalanceCell」を実行する瞬間に、データオブジェクトの新しいインスタンスを作成し、ここでデータを管理する必要があります。必要なデータを管理した後、データソースに追加するだけでテーブルを更新することができます。つまり、データソースに新しいエントリがあるため、新しいセルを作成します。

データソース内のdataObjectにアクセスしてこれらのセルを更新するのと同じ方法です。あなたはあなたのデータソース内のオブジェクトを尋ねることができ、それをあなたが望むように管理することができます。その後、テーブルを更新すると、セルは新しいデータで更新されます。

要するに、セルには主に、データそのものではなくデータを表示する手段があります。

関連する問題