我知道以前曾问过类似的问题,但请耐心等待,因为我在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;
}
我的第一个。 MainStoryBoard_iPhone
是.xib / storyboard-file的名称。
但没有。错误说
Property 'changeName' not found on object of type 'UIViewController *'
在我的第二个小时里,我有
@property (readwrite, retain) NSString *changeName;
并在second.m
@synthesize changeName;
所有帮助都表示赞赏,但请记住,我只使用了OOP两天。 提前谢谢大家
编辑:我应该在这里输入什么?
- (void)viewDidLoad
{
[super viewDidLoad];
mylabel.text = Name; // or [mylabel.text Name] or something?
}
答案 0 :(得分:5)
您需要将返回的视图控制器强制转换为自定义的第二个视图控制器(因为UIViewController
没有属性changeName
)。
请执行以下操作:
// Create a UIViewController object of the wanted element from MainStoryBoard_iPhone
SecondViewController *secondview = (SecondViewController *)[storyboard instantiateViewControllerWithIdentifier:(NSString *)@"secondBoard"];
我假设SecondViewController是第二个控制器的名称。
答案 1 :(得分:0)
在我的情况下,我想从FirstViewController传递一个字符串,在SecondViewController中设置一个文本字段,所以:
1-在SecondViewController.h中
@property(强,非原子)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];
//显示AdView
[self.navigationController presentViewController:nav animated:YES completion:nil];
4-就是这样!
5-有一种情况,如果我在FirstViewController中并希望以相同的方式在SecondViewController中设置字符串属性,那么在你按下SecondViewController中的某个按钮之前,该字符串将不会获取该值,它不会像在viewDidLoad中那样得到它!不知道为什么。