How to pass the NSString from One UIViewController to Another UIViewController? [duplicate]

匿名 (未验证) 提交于 2019-12-03 08:33:39

问题:

Possible Duplicate:
iOS - Passing variable to view controller

I have two Viewcontrollers (ViewController1 and ViewController2) , And i want to pass a String value along with a IBAction from ViewController1 to ViewController2. I am trying to read the NSString (*check) value in ViewController2's ViewDidLoad method, but it's returning a null value.

Help me out and Thanks in advance.

// ViewController1  @interface ViewController1 : UIViewController {          IBOutlet UIButton *btn1;         IBOutlet UIButton *btn2;         NSString *check;     } #import "ViewController.h"  -(IBAction)buttonClicked:(id)sender {      check = [[NSString alloc] init];      if (btn1.tag == 0) {         check = @"foo";         NSLog(@"%@",check);         }     if (btn2.tag == 1) {         check = @"bar";         NSLog(@"%@",check);     } } 

in my second view controller ,

#import <UIKit/UIKit.h>  @class ViewController1;  @interface ViewController2 : UIViewController {      ViewController1 *viewCon; }  @property(nonatomic,retain) ViewController *viewCon;  //.m  #import "ViewController2.h" #import "ViewController1.h"  @synthesize viewCon,   - (void)viewDidLoad {     ViewController *myVC = [[ViewController alloc] init];     NSLog(@"  Label  %@",myVC.check);     [super viewDidLoad]; }

回答1:

-(IBAction)buttonClicked:(id)sender {     //check = [[NSString alloc] init]; -- NO Need      if (btn1.tag == 0) {         check = @"foo";         NSLog(@"%@",check);         }     if (btn2.tag == 1) {         check = @"bar";         NSLog(@"%@",check);     }    ViewController2 *obj = [[ViewController2 alloc] initWithNibName:@"ViewController2"];   [obj setCheck:check];   //push to ViewController2   [obj release];

}

In your second view controller,

#import <UIKit/UIKit.h>  @interface ViewController2 : UIViewController {          NSString *check; } @property (nonatomic, retain) NSString *check;   //.m  #import "ViewController2.h"  @synthesize check;    - (void)viewDidLoad {     NSLog(@"  Label  %@",check); }


回答2:

Pass data from ViewController1 to ViewController2 using instance ofViewController2 followed by dot operator:

Create a property of NSString *strCheck in ViewController2 as u want to pass data to ViewController2.

Now in button's click event of ViewController1

-(IBAction)buttonClicked:(id)sender { {   .......  .......   ViewController2 *objViewController2 = [ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];  objViewController2.strCheck = check; //ViewController1's value to ViewController2  }


回答3:

See this link -
iOS - Passing variable to view controller .
I have already given answer for same thing.

You need to set variable's @property and @synthesized. For more check the link.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!