0

我知道以前有人问过类似的问题,但请多多包涵,因为我是 Objective C 的新手(对 C 有很好的了解)。

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

为了到达另一个视图控制器,我从 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;
}

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

但不是。错误说

Property 'changeName' not found on object of type 'UIViewController *'

在我的 second.h 我有

 @property (readwrite, retain) NSString *changeName;

在 second.m

 @synthesize changeName;

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

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

 - (void)viewDidLoad
{
[super viewDidLoad];
mylabel.text = Name; // or [mylabel.text Name] or something? 
}
4

2 回答 2

5

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

所以请执行以下操作:

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

我假设 SecondViewController 是您的第二个控制器的名称。

于 2012-06-08T08:27:13.177 回答
0

在我的情况下,我想从 FirstViewController 传递一个字符串以在 SecondViewController 中设置一个文本字段,所以:

1- 在 SecondViewController.h

@property (strong, nonatomic) IBOutlet UITextField *someTextField;// 这是链接到 UITextField

2- 在 FirstViewController.m 中:

#import "SecondViewController.h"

3-我将在 FirstViewController 中按下按钮后执行此操作:

SecondViewController *SecondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

//设置字段值

    SecondView.someTextField.text = @"HeLLO from First";


UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: SecondView];                  

//显示广告视图

   [self.navigationController presentViewController:nav animated:YES completion:nil];

4-就是这样!

5- 有一种情况,如果我在 FirstViewController 中并想以相同的方式在 SecondViewController 中设置一个字符串属性,则在您按下 SecondViewController 中的某个按钮之前,该字符串不会获得值,它不会例如在 viewDidLoad 中得到它!不知道为什么。

于 2014-07-03T16:48:59.880 回答