4

我在这里检查了有关堆栈溢出的问题,我以相同的方式进行操作,但仍然返回 NULL

在第一个视图中

在 firstviewcontroller.hi 中有

@property (nonatomic, copy) NSString *Astring;

在第一个viewcontroller.m

#import "SecondViewController.h"
...
@synthesize Astring = _Astring;
...

- (IBAction)filterSearch:(id)sender {
NSlog(@"%@",Astring)

      }

在第二个viewcontroller.m

#import firstviewcontroller.h
...
...
FirstViewController *controller = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];
 controller.Astring = @"YES";

所以基本上我在第一个视图控制器中创建一个变量并将第二个视图控制器中的变量传递给第二个视图,但它总是返回 NULL...

我的逻辑是错的还是别的什么

4

1 回答 1

0

这就是问题所在。您确实在更改 AString 的字符串值,但是在视图控制器的新实例上。这一行:FirstViewController *controller = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];正在创建控制器的新实例。因此,现有控制器的视图控制器具有相同的属性。

那么你需要做的是找到一种方法来获取你的 firstViewController 的实例。

在 secondViewController.h 中,添加此属性。

#import "firstViewController.h"
 ...
@property (nonatomic, strong) firstViewController *firstController;

然后,在 secondViewController.m 中,您可以使用 firstController 调用字符串中的更改,它将包含您所追求的实例。我相信现在应该是这样的:

firstController.Astring = @"YES"

干杯!

于 2012-12-04T16:14:33.253 回答