Ios 将数据从一个视图控制器传输到另一个视图控制器

Ios 将数据从一个视图控制器传输到另一个视图控制器,ios,iphone,button,transfer,Ios,Iphone,Button,Transfer,若我在第一个视图控制器中填写“州”、“省”和“镇”,那个么当我按下“确定”按钮时,如何在另一个视图控制器中仅获取“镇”或“镇和“州” 简易方法: 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)click

若我在第一个视图控制器中填写“州”、“省”和“镇”,那个么当我按下“确定”按钮时,如何在另一个视图控制器中仅获取“镇”或“镇和“州”

简易方法:

 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;
协议DataProviderDelegate { @必需的 -(NSString*)getTown; -(NSString*)getState; } @实施 FirstViewController:UIViewController { } @声明 SecondViewController:UIViewController @属性(非原子,弱)DataProviderDelegate*dataProvider;
在序列中,将第一个视图控制器作为代理分配给第二个视图控制器

首先,您应该在SecondVC.h中创建一个属性以接收de文本,并在屏幕中创建一个链接到标签的属性:

@property(nonatomic, copy) NSString *townText;
@property (weak, nonatomic) IBOutlet UILabel *townLabel;
之后,在第二个vc.m中,按如下方式覆盖“viewwillappease”方法:

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

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

}


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

谢谢,以及如何在FirstVC.m中导入SecondVC.h?我还有一个警告:在类型为“ViewController”的对象上找不到属性“townTextView”Hi tomas t,要在FirstVC.m中导入SecondVC.h,只需在下面写#import“SecondVC.h”#import“FirstVC.h”在班上名列前茅。然后,您将能够在FirstVC.m中使用SecondVC类,并且能够将一个类的数据传递给另一个类。其中的preperty“townTextView”引用文本视图,您可以在第一个vc中写入城镇名称。请检查您是否为其设置了其他名称…嘿,谢谢,但它根本不起作用:(可能我做错了什么。我添加了所有内容,你说了什么,但是当我添加州、省和镇并在另一个窗口中按下“确定”时,没有任何内容。我在那里添加了标签,并将引用出口添加到按钮“确定”。但它不起作用。我如何将第一个视图控制器作为代理分配给第二个视图控制器?谢谢
- (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.