0

カスタムセルで満たされたテーブルビューがあります。すべてのセルには 2 つのボタンがあり、最初のボタンを押すと別のビューに移動します。

私のセカンドビューには、前のテーブルビューのセルの2番目のボタンと同じ機能を持つボタンが1つあります。セカンドビューのボタンを押すと非表示になりますが、セルの2番目のボタンも非表示にしたいです。

でも注意!すべてではなく、最初のボタンを押したこの特定のセルの 2 番目のボタンのみを非表示にしたい!

どうやってやるの?前もって感謝します!

4

3 に答える 3

2

最初のビューをデリゲートとして 2 番目のビューに渡す必要があります。2 番目のビューで変更が行われると、最初のビューhideSecondButtonまたは作成した任意のメソッドを呼び出します。とにかく、あなたの問題のキーワードはdelegateです。

于 2012-07-20T07:44:05.557 に答える
1

これを実装する最も簡単な方法は、通知を使用することです。モデルが変更されたときにデータモデルで通知を発行します。

[[NSNotificationCenter defaultCenter] postNotificationName:@"fooModelChanged" object:self];

fooModelChangedモデルの通知をリッスンするビューとビュー コントローラーで、これを追加し、リスナー メソッドを実装します。

- (void)viewDidLoad {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fooModelHasChanged:) name:@"fooModelChanged" object:fooModel];
}

- (void)fooModelHasChanged:(NSNotification*)notification {
   // Add buttons, remove buttons or simply...
   [self.tableView reloadData];
}

この問題は、デリゲートを使用することにより、より良いアプローチで解決できます。しかし、説明と実装には時間がかかります。リスナーの実装を理解するために、Objective-C のコードをさらに読むことをお勧めします。

于 2012-07-20T07:59:46.710 に答える
0

@Cernal、「object:fooModel」は「fooModel.xcdatamodeld」を参照していますか、それとも何か見逃していますか?

于 2012-09-11T18:31:09.180 に答える