質問があります。UITableView
同じ画面にビューコントローラーと詳細ビュー(基本的に詳細を表示する別のビューコントローラー)を含むiPadアプリがあります。UITableView
が実行されたときから行データ-didSelectRowAtIndexPath
をこの詳細ビューに渡す必要があります。これを行う方法がわかりませんか?これを行う方法に関するヘルプ/ポインター/サンプルコードはありますか?
事前にご協力いただきありがとうございます
質問があります。UITableView
同じ画面にビューコントローラーと詳細ビュー(基本的に詳細を表示する別のビューコントローラー)を含むiPadアプリがあります。UITableView
が実行されたときから行データ-didSelectRowAtIndexPath
をこの詳細ビューに渡す必要があります。これを行う方法がわかりませんか?これを行う方法に関するヘルプ/ポインター/サンプルコードはありますか?
事前にご協力いただきありがとうございます
UITableView ビュー コントローラーでデリゲートを定義し、詳細ビュー コントローラーに実装します。didSelectRowAtIndexPath が呼び出されたら、デリゲート メソッドを呼び出して、行データを詳細ビュー コントローラーに渡します。
デリゲートの定義は次のようになります。
@class MyTopLevelViewController;
@protocol MyTopLevelViewControllerDelegate <NSObject>
-(void)showDetail:(DetailObject *)detail;
@interface MyTopLevelViewController : UIViewController
@property (nonatomic, weak) id <MyTopLevelViewControllerDelegate> delegate;
@end
デリゲートを詳細ビュー コントローラー ヘッダーに追加します。
@interface MyDetailViewController : UIViewController <MyTopLevelViewControllerDelegate>
同じ画面の didSelectRowAtIndexPath で別のビュー コントローラーにデータを渡す場合は、「objectAtIndex:indexPath.row」を取得するので、配列を使用できます。次のコードが役立つ場合があります。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DetailFoodViewController *detailFoodViewController=[[DetailFoodViewController alloc] initWithNibName:@"DetailFoodViewController" bundle:nil];
JSCategory *jSCategory=[self.categoryResult.JSCategories objectAtIndex:indexPath.row];
detailFoodViewController.jsCategory=jSCategory;
detailFoodViewController.oldStoreLocationId=self.oldStoreId;
[self.view addSubview:detailFoodViewController.view];
[detailFoodViewController release];
}