从Storyboard获取ViewController

Sam*_*Sam 4 objective-c nsstring ios uistoryboard

我有两个ViewControllers,它们没有(直接)与Segue连接.但我想在第二个VC中更改一个字符串,我在第一个中获取.我的尝试是:

    #import "secondViewController.h"

    @interface firstViewController ()
    @property NSString* originalString;
    @end

    @implementation firstViewController

    -(void)viewDidDisappear:(BOOL)animated{
        [super viewDidDisappear:animated];
        secondViewController* svc = [secondViewController new];
        svc.anotherString = self.originalString;    
    }
Run Code Online (Sandbox Code Playgroud)

但它起作用,因为我只创建了第二个VC的实例,因此没有保存该值.我也不能使用Storyboard ID,因为我使用的是Xcode 5.

我有一个menuVC,你可以从中获得firstVC和secondVC.从第一个VC我可以返回(使用navigationbackbarbutton)到菜单.所以:menu-> firstVC-> menu.菜单 - > secondVC - > ...->菜单

我尝试使用StoryboardID:

    -(void)viewDidDisappear:(BOOL)animated{
        [super viewDidDisappear:animated];

        secondViewController* svc =[[UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"secondVCSrorybradID"];

        svc.anotherString = self.originalString;    
    }
Run Code Online (Sandbox Code Playgroud)

小智 11

您可以使用此代码将字符串传递给第二个视图控制器.

secondViewController* svc =[self.storyboard instantiateViewControllerWithIdentifier:@"Your Second VC's Storyboad ID"];
svc.anotherString = self.originalString;    
[self presentViewController:svc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

//你必须在第二个View Controller的.h文件中创建anotherString属性.

现在你可以将originalString的字符串输入到第二个VC.现在你可以将这个值从第二个VC恢复到第一个VC.

希望这能帮助你.