1

質問があります。UITableView同じ画面にビューコントローラーと詳細ビュー(基本的に詳細を表示する別のビューコントローラー)を含むiPadアプリがあります。UITableViewが実行されたときから行データ-didSelectRowAtIndexPathをこの詳細ビューに渡す必要があります。これを行う方法がわかりませんか?これを行う方法に関するヘルプ/ポインター/サンプルコードはありますか?

事前にご協力いただきありがとうございます

4

2 に答える 2

1

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>
于 2012-09-09T10:15:39.080 に答える
-1

同じ画面の 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];

}
于 2012-09-10T12:22:12.383 に答える