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