在ViewContrller1.h中:
@property (retain,nonatomic) NSString *myString;
在ViewController2.m中,我想从文本框中读取一个值并将其分配给viewContrller1.theString并转到ViewContrller1
我使用了这个方法但是我在ViewContrller1中得到了我的字符串的空值:
- (IBAction)buttonPressed:(id)sender {
ViewContrller1 *go=[self.storyboard instantiateViewControllerWithIdentifier:@"ViewContrller1"];
go.myString=self.myTextFeild.text;
[self.navigationController pushViewController:go animated:YES];
}
想知道它是如何工作的?
答案 0 :(得分:0)
要在两个视图之间传递属性,接收视图必须具有公共属性。例如,你的VC 2应该有一个公共的NSString。这意味着在.h文件中声明。然后在您的初始VC上,您必须在prepareForSegue
方法上传递字符串。这里有类似的东西:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"vc2segue"]) {
UIViewController *vc=segue.destinationViewController;
vc.publicNstring=self.someTextView.text;
}
}
答案 1 :(得分:0)
尝试在新视图控制器中简单导入viewcontrller1.h。
#import "viewcontrller1.h"
Marcal的回答也应该有效。
答案 2 :(得分:0)
您发布的代码没有任何问题,假设您没有输入拼写错误,并且已将文本字段和按钮连接到第二个视图控制器(发送字符串的那个)并且您已将故事板ID添加到故事板中的第一个视图控制器 - 请参阅此处http://sketchytech.blogspot.co.uk/2012/11/instantiate-view-controller-using.html
假设您还在导航控制器中嵌入了视图控制器,那么viewcontrller1.m中的一行代码(viewDidLoad :):
NSLog(@"%@",self.myString);
应该确认它有效。事实上,我只是用你的代码测试它,它的工作原理。如果您已完成上述所有操作,请检查拼写错误。