1

有一个问题。我有一个 ipad 应用程序,它在同一屏幕上包含一个视图控制器UITableView和一个详细视图(基本上是另一个显示详细信息的视图控制器)。我需要将执行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 回答