从一个ViewController发送数据到另一个。

我有两个ViewController:

1) ViewController

2) TestAppViewController

ViewController.h ,我定义了一个标签,我想从第二个viewController发送文本,即TestAppViewController。

为此,我在ViewController.h中定义了@property NSString * ,并在第二个Controller中创build了这个ViewController的一个对象。 然后传递一个值给这个属性,但ans仍然是零。

以下是我的代码:

 @property (nonatomic, retain) NSString *lableName;* 

视图控制器

 #import "ViewController.h #import "TestAppView1.h" #import "TestAppViewController2.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // [self addView1]; } - (void)viewWillAppear:(BOOL)animated { [self addView1]; NSLog(@"Label name is %@",self.lableName); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)addView1 { TestAppView1 *testAppView1Obj = [ [TestAppView1 alloc] initWithFrame:self.view.bounds]; [testAppView1Obj setDelegate:self]; [testAppView1Obj setSelectorOnButtonTapped:@selector(buttonTapped)]; [self.view addSubview:testAppView1Obj]; } -(void)buttonTapped { TestAppViewController2 *testAppViewController2Obj =[[TestAppViewController2 alloc]initWithNibName:@"TestAppViewController2" bundle:nil]; [self.navigationController pushViewController:testAppViewController2Obj animated:YES]; } @end 

ViewController2

 #import "TestAppViewController2.h" #import "TestAppView2.h" #import "ViewController.h" @interface TestAppViewController2 () @end @implementation TestAppViewController2 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } -(void)viewWillAppear:(BOOL)animated { [self addView2]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(void)addView2 { TestAppView2 *testAppView2Obj =[ [TestAppView2 alloc]initWithFrame:self.view.bounds]; [testAppView2Obj setDelegate:self]; [testAppView2Obj setSelectorOnBackButton:@selector(callbackButtonTapped)]; [self.view addSubview:testAppView2Obj]; } -(void)callbackButtonTapped { ViewController *viewControllerObj = [[ViewController alloc]init]; viewControllerObj.lableName=@"Yogesh"; [self.navigationController popViewControllerAnimated:YES]; } @end 

当我尝试在NSLog中打印值时,它给了我零。

使用委托:

在TestAppViewController.h中:

  @protocol messageDelegate <NSObject> @optional -(void)test:(NSString*)str; @end @interface SecondViewController : NSString @property (nonatomic, assign) id <messageDelegate> delegate; @end 

在TestAppViewController.m中:

 -(void)readyToSend { [self.delegate test:@"Hello world!"]; } 

在ViewController.h中:

 @interface ViewController : UIViewController<messageDelegate> @end 

在ViewController.m中:in

 - (void)viewDidLoad { TestAppViewController * testAppViewController = [[TestAppViewController alloc] init]; testAppViewController.delegate = self; } -(void) test:(NSString*)str{ NSLog(@"%@,str"); } 

希望它会帮助!

这是将数据从一个控制器传递到另一个控制器的简单解决scheme

在这里检查代码在视图控制器之间传递数据