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