0

Objective-C で最初のアプリを開発しています。最初のビュー コントローラでは、アクセサリ ボタンを含む動的なプロトタイプ セルを使用して UITableview を生成できます。アクセサリ ボタンをクリックすると、次のビュー コントローラに移動します。これには、(カスタム ボタン)アクセサリ ボタンとして選択された動的な UITableviewcells もあります。しかし、特定の選択ボタンをクリックすると、アクセサリボタンがクリックされたセル(最初の画面)で対応するセルの内容が更新されます。2番目の画面から最初の画面まで詳細を取得できます。しかし、最初の画面のカスタム セルが更新されませんか?

リファレンス ドキュメントで見つけられなかった定義済みの関数があるかどうかを助けてください。

前もって感謝します..

4

1 に答える 1

0

iOS 5 開発の開始から得られたソリューション アルゴリズムがあります。

1.prepareSegue で indexPath を取得する

// prepare selection info
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];

2.それを2番目のView Controllerに送信します

    UIViewController *destination = segue.destinationViewController;
    [destination setValue:self forKey:@"delegate"];

    id object = [self.tasks objectAtIndex:indexPath.row];
    NSDictionary *selection = [NSDictionary dictionaryWithObjectsAndKeys:indexPath,@"indexPath",object,@"object", nil];        
    [destination setValue:selection forKey:@"selection"];

3. 2 番目のビュー コントローラーは、後で indexPathを最初のコントローラーに送り返します。

// prepare selection info back
NSIndexPath *indexPath = [_selection objectForKey:@"indexPath"];
id object = _textView.text;
NSDictionary *editedSelection = [NSDictionary dictionaryWithObjectsAndKeys:indexPath, @"indexPath", object, @"object", nil];
[_delegate setValue:editedSelection forKey:@"editedSelection"];

4.したがって、2番目のView ControllerからindexPathを取得するために使用される最初のView Controllerのgetterメソッドでは、indexPathによってテーブルセルを取得し、その値を変更します

#pragma mark - Call back by destination view
-(void)setEditedSelection:(NSDictionary *)dict{
    NSIndexPath *indexPath = [dict objectForKey:@"indexPath"];
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    ....
}
于 2013-01-07T05:30:05.030 に答える