【发布时间】:2013-02-05 18:05:24
【问题描述】:
我在情节提要中有两个视图控制器。 VC1 有三个按钮,VC2 有一个图像视图。
当点击VC1中的按钮A时,VC2显示A的图像。 当点击VC1中的按钮B时,VC2显示B的图像。
VC2如何知道VC1点击了哪个按钮?
【问题讨论】:
我在情节提要中有两个视图控制器。 VC1 有三个按钮,VC2 有一个图像视图。
当点击VC1中的按钮A时,VC2显示A的图像。 当点击VC1中的按钮B时,VC2显示B的图像。
VC2如何知道VC1点击了哪个按钮?
【问题讨论】:
这很简单!!!
1) 在 VC2 中在 .h 文件中创建 NSString 属性,然后在 .m 文件“NSStringObjofVC2”中合成该属性 2) 在 VC1 .h 文件中导入 VC2 #import "VC2" 并创建这样的对象
VC2 *vc2Obj;
3) 在 viewdidload 方法中
vc2Obj = [[VC2 alloc] init];
4) 在每个按钮上单击添加此
vc2Obj.NSStringObjofVC2 = @"differentImageNameforAll3Buttons.png";
最后在 VC2 中使用图像
只需在 UIImage 中使用 NSStringObjofVC2 作为文件名
【讨论】:
在 VC2 中设置委托以将信息发送回原始 VC。 谷歌“objective-c delegate”并阅读模型-视图-控制器范式。
【讨论】:
你可以做到 Segue:
提供从 Button A 到 VC2、从 Button B 到 VC2、从 Button A 到 VC2l 的 segue 连接
分别输入转场标识符 SegueA、SegueB、SegueC。
在VC1中编写如下方法:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
ImageViewController *vc2=(ImageViewController*)[ segue destinationViewController];
if([[segue identifier] isEqualToString:@"SegueA"]){
vc2.imageView.image =[UIImage imageNamed:@"a.png"];
}else
if([[segue identifier] isEqualToString:@"SegueB"]){
vc2.imageView.image =[UIImage imageNamed:@"b.png"];
}else
if([[segue identifier] isEqualToString:@"SegueC"]){
vc2.imageView.image =[UIImage imageNamed:@"c.png"];
}
}
【讨论】: