ios - 在调用中获取额外参数 'animated'

标签 ios xcode swift

当我尝试以编程方式转到另一个 Storyboard时,我使用

//Pop user to next screen
let storyboard = UIStoryboard(name: "HomeViewController", bundle: nil);
let vc = storyboard.instantiateViewControllerWithIdentifier("home") as UIViewController;
self.presentViewController(vc, animated: true, completion: nil);

但这并没有在下一个 Storyboard上显示导航 Controller 。所以我做了

HomeViewController.presentViewController(vc, animated: true, completion: nil);

所有抛出的都是

Extra argument 'animated' in call

有什么想法吗?

最佳答案

关于您的第一个问题的一些观察:

  • 对于第一个问题,您可能需要确保 vc 不是 nil(例如, Storyboard ID 为 home 的场景 被发现):

    if let vc = storyboard.instantiateViewControllerWithIdentifier("home") as? UIViewController {
        presentViewController(vc, animated: true, completion: nil)
    } else {
        println("home not found")
    }
    
  • 我建议您仔细检查“家庭”场景的“ Storyboard ID”的拼写和大小写。

  • 顺便说一句,如果您在 IB 中为第二个 Storyboard 中的第一个场景选中了“Is Initial View Controller”复选框,那么您也可以:

    let vc = storyboard.instantiateInitialViewController()
    

    您可以直观地确认此设置,因为场景将有一个从左侧指向它的小“初始转场”箭头:

    initial view controller

  • 如果您正在对目标场景执行 presentViewController,该场景本身嵌入导航 Controller 中,那么您应该呈现该导航 Controller (即给导航 Controller 的场景“ Storyboard ID”或将其指定为“是初始 View Controller ”),而不是嵌入到该导航 Controller 中的场景。

关于您的第二个错误,那是因为您正在调用实例方法 presentViewController,但引用的可能是类名 HomeViewController,而不是实例。这种语法根本没有任何意义。

self.presentViewController(...) 的前一种语法可能是正确的,但很可能找不到 Storyboard 或场景,因为其中一个或另一个的名称(很可能场景的“ Storyboard ID”)或因为记分板未包含在包中(尽管我认为这会产生不同的错误)。

关于ios - 在调用中获取额外参数 'animated',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26695415/

相关文章:

ios - NSManageObjectContext - 类不是键@count 的键值编码兼容

ios - 在产品包中嵌入 Assets 包,Xcode 9.2

ios - 'textFieldDidBeginEditing' 几乎匹配 Swift 中协议(protocol) 'textFieldDidBeginEditing' 的可选要求 'UITextFieldDelegate'

ios - 在 iOS 应用程序中存储用户信息的最佳方式

ios - 模态转换后释放 SKScene

ios - 无法加载图表数据

ios - 将 UIImage 加载到 float 组以供 DeepLearningKit 使用

ios - 如何对 iOS View Controller 进行单元测试?

ios - Xcode lldb 不存储属性

objective-c - 设置 NSMutableArray 全局变量