如何在xcode中访问其他viewcontrollers变量/属性

chw*_*hwi 0 objective-c uiviewcontroller ios4 xcode4 xcode4.2

我知道之前已经问过类似的问题,但请跟我一起,因为我在Objective C上是全新的(对C有很好的了解).

我的情况是我有一个带有两个窗口的标签栏控制器.当我在"秒"按下按钮时,我改变了一个变量changeName.我想使用changeName我的"第一个"视图控制器中的值,但偶然发现了一些问题:

为了达到另一个viewcontroller,我发现这是从SO(不幸的是我忘了在哪里):

-(NSString *)newName{

// Create a UIStoryboard object of "MainStoryBoard_iPhone" named storyboard
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:(NSString *)@"MainStoryBoard_iPhone" bundle:(NSBundle *)nil];

// Create a UIViewController object of the wanted element from MainStoryBoard_iPhone
UIViewController *secondview = [storyboard instantiateViewControllerWithIdentifier:(NSString *)@"secondBoard"];

return secondview.changeName;
}
Run Code Online (Sandbox Code Playgroud)

我在我的第一个.MainStoryBoard_iPhone是.xib/storyboard文件的名称.

但不是.错误说

Property 'changeName' not found on object of type 'UIViewController *'
Run Code Online (Sandbox Code Playgroud)

在我的第二个.我有

 @property (readwrite, retain) NSString *changeName;
Run Code Online (Sandbox Code Playgroud)

在第二天

 @synthesize changeName;
Run Code Online (Sandbox Code Playgroud)

感谢所有帮助,但请记住,我只使用OOP两天.谢谢大家

编辑:我应该在这里输入什么?

 - (void)viewDidLoad
{
[super viewDidLoad];
mylabel.text = Name; // or [mylabel.text Name] or something? 
}
Run Code Online (Sandbox Code Playgroud)

gio*_*shc 5

您需要将返回的视图控制器转换为自定义的第二个视图控制器(因为UIViewController没有该属性changeName).

所以做以下事情:

// Create a UIViewController object of the wanted element from MainStoryBoard_iPhone
SecondViewController *secondview = (SecondViewController *)[storyboard instantiateViewControllerWithIdentifier:(NSString *)@"secondBoard"]; 
Run Code Online (Sandbox Code Playgroud)

我假设SecondViewController是你的第二个控制器的名称.