我正在为一个小型iPhone应用程序加载新视图,并想知道如何将细节从一个传递到另一个? 我正在加载一个包含来自和xml文件的数据的tableview,然后一旦点击就会通过以下方式引入新视图:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
SubInfoViewController *subcontroller = [[SubInfoViewController alloc] initWithNibName:@"SubInfoView" bundle:nil];
[self presentModalViewController:subcontroller animated:YES];
[subcontroller release];
}
下一步是告诉新加载的视图刚刚加载了哪一行? 任何想法,想法超过欢迎,请温柔的大新手...
答案 0 :(得分:3)
我通常会创建自己的init方法来执行此类操作。我认为传递tableView行所代表的相应“模型”对象而不是行号本身可能会更好,如下所示:
在SubInfoViewController.h中
@interface SubInfoViewController : UIViewController {
YourObject *yourObject;
}
@property (nonatomic, retain) YourObject *yourObject;
然后在SubInfoViewController.m中:
- (SubInfoViewController*)initWithYourObject:(YourObject*)anObject {
if((self = [super initWithNibName@"SubInfoView" bundle:nil])) {
self.yourObject = anObject;
}
return self;
}
您可以通过这种方式创建和展示它:
// assuming you've got an array storing objects represented
// in the tableView called objectArray
SubInfoViewController *vc = [[SubInfoViewController alloc] initWithYourObject:[objectArray objectAtIndex:indexPath.row]];
[self presentModalViewController:vc animated:YES];
[vc release];
这可以非常容易地进行调整,以允许您传入任何类型的对象或值(例如,如果您仍想这样做,则为行号)。
答案 1 :(得分:0)
将一个实例变量添加到视图控制器并声明一个与之对应的属性,因此在分配之后初始化它,将其设置为subcontroller.foo = Blah Blah。