在UIViewControllers之间传递字符串。

时间:2014-04-02 15:47:22

标签: ios iphone objective-c uiviewcontroller storyboard

在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];

}

想知道它是如何工作的?

3 个答案:

答案 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);

应该确认它有效。事实上,我只是用你的代码测试它,它的工作原理。如果您已完成上述所有操作,请检查拼写错误。