如何解决如何告诉即将到来的viewController被哪个按钮调用
|| 我有一个viewController,可以说blaVC
,它通过按下按钮来调用另一个视图控制器blubbVC
。由于有4个按钮,所有按钮都用相同的笔尖调用blubbVC
,但是内容应根据blaVC
中按下哪个按钮而有所不同(内容将从plist加载),我需要blubbVC
才能知道\“ I \”我们已经被调用,因为按下了按钮A,所以我将使用objectForKey:@ \“ button A \” \“从plist加载(可以这么说。)。
我这样称呼blubbVC
- (IBAction) buttonA:(id)sender {
blubbVC *detailView = [[blubbVC alloc] initWithNibName:@\"blubbNib\" bundle:nil];
[self.navigationController pushViewController:detailView animated:YES];
[detailView release];
}
我试图通过sender
,但是当我将内容加载到initWithNibName
中时,sender
来晚了,该内容已被加载(或试图加载),并且我的视图保持空白。我该怎么做?
谢谢!
解决方法
您应该定义一个函数,该函数说在初始化之后,将发送者(或代表按下哪个按钮的某个值)设置为所有状态。
例如:
[detailView setupContent:(id)sender];
初始化视图控制器时,它尚未显示。在调用pushViewController之前,请调用新函数,因此您需要:
- (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:]
。
,您需要在视图控制器中创建自定义init方法。就像是:
+(id)initWithCaller:(NSString*)caller
{
if(self == [super initWithNibName:@\"blubbNib\" bundle:nil])
{
calledFrom = x;
}
return self;
}
那只是从内存中键入内容,因此可能存在一些错误。然后,您将在IBAction中使用该新的init方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。