如何在两个视图控制器之间发送和获取数据?

时间:2013-02-05 18:05:25

标签: ios xcode

我在故事板中有两个视图控制器。 VC1有三个按钮,VC2有一个图像视图。

单击VC1中的按钮A,然后VC2显示A的图像。 单击VC1中的按钮B,然后VC2显示B的图像。

VC2如何知道在VC1中点击了哪个按钮?

3 个答案:

答案 0 :(得分:0)

在VC2中设置委托以将信息发送回原始VC。 Google“objective-c delegate”并对模型 - 视图 - 控制器范例进行了一些阅读。

答案 1 :(得分:0)

这很简单!!!

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作为文件名

答案 2 :(得分:0)

你可以做到Segue:

  1. 添加导航控制器:选择VC1,然后选择编辑器>嵌入式>导航控制器
  2. 提供从按钮A到VC2的连接,从按钮B到VC2,从按钮A到VC2l

  3. 分别输入segue标识符SegueA,SegueB,SegueC。

  4. 在VC1中编写以下方法:

  5. - (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"];
    
    }
    

    }