将数据从UITableView推送到同一屏幕上的另一个UIViewController

时间:2012-09-09 08:36:18

标签: ios ios5 uiviewcontroller

有一个问题。我有一个ipad应用程序,它包含一个带有UITableView的视图控制器和一个详细视图(基本上是另一个显示详细信息的视图控制器)在同一个屏幕上。我需要在执行UITableView时将行数据从-didSelectRowAtIndexPath传递到此详细信息视图。我不知道该怎么做呢?有关如何执行此操作的任何帮助/指针/示例代码?

感谢您的提前帮助

2 个答案:

答案 0 :(得分:1)

在UITableView视图控制器中定义委托,并在详细视图控制器中实现它。当调用didSelectRowAtIndexPath时,调用delegate方法,将行数据传递给详细视图控制器。

委托定义类似于:

@class MyTopLevelViewController;

@protocol MyTopLevelViewControllerDelegate <NSObject>

-(void)showDetail:(DetailObject *)detail;

@interface MyTopLevelViewController : UIViewController

@property (nonatomic, weak) id <MyTopLevelViewControllerDelegate> delegate;

@end

并将委托添加到详细视图控制器头:

@interface MyDetailViewController : UIViewController <MyTopLevelViewControllerDelegate>

答案 1 :(得分:-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];

}