【问题标题】:transfer data from one view controller to another view controller将数据从一个视图控制器传输到另一个视图控制器
【发布时间】:2015-03-07 21:21:39
【问题描述】:

如果我在第一个视图控制器中填写州、省和城镇,当我按下 OK 按钮时,如何在另一个视图控制器中获取城镇或城镇和州。

http://i.stack.imgur.com/jhwGq.png

【问题讨论】:

    标签: ios iphone button transfer


    【解决方案1】:

    首先,你应该在 SecondVC.h 中创建一个属性来接收 de text 和一个链接到 screen 中标签的属性:

    @property(nonatomic, copy) NSString *townText;
    @property (weak, nonatomic) IBOutlet UILabel *townLabel;
    

    之后,在SecondVC.m中,覆盖“viewWillAppear”方法如下:

    - (void) viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    self.townLabel.text = self.townText;
    

    }

    然后,在 FirstVC.m 中,覆盖“prepareForSegue”方法:

    - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    SecondVC *secondVC = segue.destinationViewController;
    secondVC.townText = self.townTextView.text; // townTextView is the TextView in screen where user writes the town name.
    

    }

    别忘了在 FirstVC.m 中导入 SecondVC.h

    【讨论】:

    • 谢谢,请问如何在 FirstVC.m 中导入 SecondVC.h?
    • 我还有一个警告:在“ViewController”类型的对象上找不到属性“townTextView”
    • 嗨 tomas t,要在 FirstVC.m 中导入 SecondVC.h,只需在类顶部的 #import "FirstVC.h" 下面写 #import "SecondVC.h"。然后,您将能够在 FirstVC.m 中使用 SecondVC 类,并且您将能够将数据传递给另一个。
    • 前面的“townTextView”指的是您在FirstVC中写城镇名称的TextView。请检查您是否为其设置了不同的名称...
    • 嘿,谢谢,但它根本不起作用:(也许我做错了什么。我添加了所有内容,你说什么,但是当我添加州、省和城镇并按下 OK 时,在另一个窗口什么都没有。我在那里添加了标签,并带有引用插座到按钮 OK。但它不起作用。
    【解决方案2】:

    简单的方法:

     Use storyboard's IBOutlet feature. One view controller class can hold a reference to another view controller
     If the code just reference the other view controller
     -(void)clickOK:(UIButton*)
     {
          NSString* town = self.anotherController;
          //do something with town
     }
    

    建议方式: 遵循模型-视图-控制器设计模式。将第一个视图控制器视为数据提供者

    Protocal DataProviderDelegate
    {
       @required
       -(NSString*)getTown;
       -(NSString*)getState;
    } 
    
     @implementation
      FirstViewController:UIViewController<DataProviderDelegate>
     {
    
     }
    
     @declaration
     SecondViewController:UIViewController
     @property(nonatomic, weak)DataProviderDelegate* dataProvider;
    

    在segue中,将第一个视图控制器作为委托分配给第二个视图控制器

    【讨论】:

    • 如何将第一个视图控制器作为委托分配给第二个?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 2015-10-04
    相关资源
    最近更新 更多