2011-06-24 8 views
2

私は、編集ボタンを含むViewControllerを持っていて、別のビュー(別のビュー)にテーブルビューが含まれている状況があります。"編集"をテーブルビューに送信する(別のビュー)

現在、編集ボタンをプログラムで追加しています(単一のビューと同じように)。しかし、編集ボタンをタップすると、期待通りに 'キャンセル'に変わりますが、テーブルは編集モードにはなりません(通常の方法はすべて有効になり、1つのビューに使用するコードが含まれています)。

私は、View Controllerの編集ボタンからテーブルビュー(別に記載されているように)に 'メッセージ'をどのように送信するのだろうかと思います。デリゲートを設定する必要はありますか?それとも特別な方法がありますか?

私はこれを公正なビットで検索しましたが、誰かが正しい方向に私を向けるのを助けることができたら、本当に感謝します。

答えて

1

を実装しますfor)テーブルビューをVC2として表示します。また、Delegationを読んでください。 iOS開発のオプションのテーマではありません。 VC2で

、メソッドの名前-setTableIsEditing宣言:(BOOL)isEditingを、単にそのように、あなたのテーブルビューにisEditingプロパティを設定し、それを実装:

- (void)setTableIsEditing:(BOOL)isEditing { 
    self.myTableView.isEditing = isEditing; 
} 

その後、ボタンのVC1の実装にtouchUpInsideデリゲート、編集モードをトラッキングするようにivar boolを更新し、正しいパラメータでVC2でそのメソッドを呼び出します。

- (IBAction)editButtonPressed { 
    _isEditingTable = !_isEditingTable; 
    [self.myVC2Instance setTableIsEditing:_isEditingTable]; 
} 
+0

ありがとう:)私は、この特別な場合に何をすべきか分からなかった代表団でよく読まれています。これですべての作業ができました。 – Candyfloss

0

代理人が働くか、テーブルビューが購読するボタンのタッチメソッドからNSNotificationを送信できます。次に、各セルごとに適切な[UITableViewCell setEditing:YES animated:YES]を呼び出します。

0

使用は

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
      // Return NO if you do not want the specified item to be editable. 
    return YES; 
} 

を使用することができます。そして、私はVC1として編集ボタンを所有するコントローラを参照するつもりだ、と(を所有するコントローラがデリゲートである

   // Override to support editing the table view. 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

// You can use NSUserDefaults for sending information to the controllers in another view 
    //and you can manipulate them. 

} 
+0

これはあまり役に立ちません。メソッドがどこに行くか、または編集ボタンがテーブルビューとは別のビューコントローラに属しているという事実を扱っているわけではありません。 – RyanR

関連する問題