我有一个viewController,比方说blaVC
,它通过按下按钮调用另一个视图控制器blubbVC
。由于有4个按钮,所有人都使用相同的笔尖调用blubbVC
,但内容应根据blaVC
中按下的按钮(内容将从plist加载)而有所不同,我需要{ {1}}知道“我已经被调用了,因为按下了按钮A,所以我将使用objectForKey从plist加载:@”按钮A“”(可以这么说......)
我称之为blubbVC
blubbVC
我尝试传递- (IBAction) buttonA:(id)sender {
blubbVC *detailView = [[blubbVC alloc] initWithNibName:@"blubbNib" bundle:nil];
[self.navigationController pushViewController:detailView animated:YES];
[detailView release];
}
,但是当我加载sender
中的内容时,initWithNibName
来得很晚,内容已经加载(或尝试过),我的视图仍为空。我该怎么做?
谢谢!
答案 0 :(得分:1)
你应该定义一个函数,该函数在初始化之后设置发送器(或表示按下哪个按钮的某个值)设置所有状态。
例如:
[detailView setupContent:(id)sender];
初始化视图控制器时,它尚未显示。在调用pushViewController之前,请调用new函数,因此您需要:
- (IBAction) buttonA:(id)sender {
blubbVC *detailView = [[blubbVC alloc] initWithNibName:@"blubbNib" bundle:nil];
[detailView setupContent:sender];
[self.navigationController pushViewController:detailView animated:YES];
[detailView release];
}
如果确实这太晚了(你需要'initWithNibName'中的数据),那么要么定义你自己的-[initWithNibName: andSender:]
或类似的东西,并在设置其余的之前调用[super initWithNibName:]
状态。
答案 1 :(得分:0)
您需要在视图控制器中创建自定义init方法。类似的东西:
+(id)initWithCaller:(NSString*)caller
{
if(self == [super initWithNibName:@"blubbNib" bundle:nil])
{
calledFrom = x;
}
return self;
}
这只是从内存中键入,因此可能存在一些错误。然后,您将在IBActions中使用新的init方法