1

我正在开发一个具有多个 ViewControllers 的应用程序,并且有一个特定的 ViewController“登录 ViewController”,我想从几乎每个 UIViewController 访问它,我知道我可以通过使用从每个控制器到 LoginViewController 的 segue 来实现这一点,我'我肯定不是最好的解决方案,实现这一目标的最佳解决方案是什么?

4

4 回答 4

7

使用这个...变量vc返回您正在寻找的视图控制器

  UIStoryboard *aStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
  YourViewController *vc = [aStoryboard instantiateViewControllerWithIdentifier:@"YourViewController"];
于 2013-05-15T08:45:40.940 回答
1

你可能可以做这样的事情

static LoginViewController *instance; //place in the implementation

- (void) viewDidLoad {
     instance = self;
}

+(LoginViewController *) getInstance { //use this method to access the instance (declare in header)
    return instance;
}

然后只需在您需要访问它的地方导入标题即可

于 2013-05-15T08:43:23.333 回答
1

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/UsingViewControllersinYourApplication/UsingViewControllersinYourApplication.html

以编程方式实例化 Storyboard 的视图控制器

清单 2-2 在同一个故事板中实例化另一个视图控制器

- (IBAction)presentSpecialViewController:(id)sender {
    UIStoryboard *storyboard = self.storyboard;
    SpecialViewController *svc = [storyboard instantiateViewControllerWithIdentifier:@"SpecialViewController"];

    // Configure the new view controller here.

    [self presentViewController:svc animated:YES completion:nil];
}
于 2013-10-16T20:13:29.770 回答
0

我建议您应该创建一个基本视图控制器,该控制器将被需要登录视图控制器的每个控制器子类化。然后在您的基础 viewController 中,您可以创建如下方法:

-(YourLoginViewController*)giveMeTheLoginController {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboardName" bundle:nil];
    YourLoginViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"YourLoginViewControllerIdentifier"];
    return viewController;
}

如果您不想要另一个基本视图控制器,您可以在视图控制器中使用相同的方法从情节提要中获取视图控制器的新实例。

使用每个视图控制器的 segues 也是一个好方法,segues 用于定义您的导航。

于 2013-05-15T08:46:06.847 回答