【问题标题】:Unable to call storyboard from xib无法从 xib 调用情节提要
【发布时间】:2013-11-10 23:08:21
【问题描述】:

我是 iOS 开发的新手。我正在尝试从 xib 文件连接到情节提要。我的 xib 视图控制器有一个“登录”,如果成功应该连接到情节提要。我已经在 stackoverflow 上搜索并搜索了解决方案,并且我正在使用随处可见的这段代码:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    YourViewController * yourView = (YourViewController *)[storyboard instantiateViewControllerWithIdentifier:@"identifier ID"];

我也为我的故事板创建了一个标识符。但是,无论我尝试什么,我都不会被重定向到情节提要。登录完成后,我回到我的主视图控制器 (xib)。我应该被重定向到情节提要。这是我的代码在名为 ProfileTabView.m 的文件中的样子:

-(void) loginViewDidFinish:(NSNotification*)notification
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];

    UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
    ProfileTabView * yourView = (ProfileTabView *)[storyboard instantiateViewControllerWithIdentifier:@"myID"];

}

我已经在登录成功后调用的函数中实现了这段代码。但是,故事板“故事板”从未被调用。我这样做对吗?我应该在其他任何地方编写此代码吗?

非常感谢您的帮助:)

【问题讨论】:

  • 您需要通过 push/present/add Subview 将“yourView”.view 添加到视图层次结构中。 loginViewDidFinish 中的那部分代码在哪里?

标签: ios iphone objective-c uiviewcontroller xcode5


【解决方案1】:
-(void) loginViewDidFinish:(NSNotification*)notification
{
NSNotificationCenter.defaultCenter().removeObserver(self)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("ViewControllerID") as UIViewController
    self.presentViewController(vc, animated: true, completion: nil)
}

【讨论】:

    【解决方案2】:

    再一步:展示新的视图控制器...

    -(void) loginViewDidFinish:(NSNotification*)notification
    {
        [[NSNotificationCenter defaultCenter] removeObserver:self];
    
        UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
        ProfileTabView * yourView = (ProfileTabView *)[storyboard instantiateViewControllerWithIdentifier:@"myID"];
    
        // it might be better to rename 'ProfileTabView' as 'ProfileTabViewController'
        // and 'yourView' as 'profileTabVC', by convention.  Anyway ...
    
        [self.presentViewController:yourView animated:YES completion:^{}];
    }
    

    如果您的登录 VC 在导航控制器中,那么您将推送新的 vc:

    [self.navigationController pushViewController:yourView animated:YES]; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 2015-07-31
      • 2013-11-30
      相关资源
      最近更新 更多