【问题标题】:Swift ViewController without prepareForSegue没有 prepareForSegue 的 Swift ViewController
【发布时间】:2016-02-06 03:24:24
【问题描述】:

在我的项目中,我有一个主控制器(由具有三个 nib 的 segue 访问。这些 nib 不在主情节提要上它们只显示在主视图上,我可以滑动查看它们。

如何从这些 nib 中的任何一个获取发送它们的 ViewController?

为了清晰

  • 视图控制器1
    • 转至 ViewController2
      • 显示滑动笔尖 (ViewController3)。

我想从 ViewController3 转到 ViewController1,但它们不在情节提要上,所以我无法单击并拖动并进行转场。

我希望这是有道理的。

编辑:IBAction

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let secondVC = storyboard.instantiateViewControllerWithIdentifier("ViewController1StoryBoardID") as! ViewController1
presentViewController(secondVC, animated: true, completion: nil)

ViewController2 有这个:

let vc3 = ViewController3(nibName: "ViewController3", bundle: nil) 
var frame3 = self.vc3.view.frame
frame3.origin.x = self.view.frame.size.width * 2
self.vc3.view.frame = frame3
self.addChildViewController(self.vc3)
self.scrollView.addSubview(self.vc3.view)
self.vc3.didMoveToParentViewController(self)

用几行额外的线来添加其他框架并滑动到它们

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您可以通过 Storyboard 实例化 Viewcontroller,

    //instanciate storyboard    
    let mainStoryBoard = UIStoryboard(name:"StoryboardName", bundle:nil)
    
    let myViewcontroller = mainStoryBoard.instanciateViewControllerWithIdentifier("viewcontrolleridentifier") as? ViewController1
    

    您可以在界面生成器中设置标识符

    【讨论】:

      【解决方案2】:
      let viewController = YourViewController(nibName: "YourViewController", bundle: NSBundle.mainBundle())
      self.navigationController?.pushViewController(viewController, animated: true)
      

      【讨论】:

        【解决方案3】:

        iOS 中有一个Navigation View Controller 的概念可以帮助你以“专业的方式”来做这件事。您将“堆叠”视图,并且可以返回到其中任何一个,将 segue 变白,然后弹出它。

        其他方法是按视图的标识符移动,而情节提要中没有明确的转场,请查看This link了解更多详细信息

        【讨论】:

          【解决方案4】:

          你这样做:

          let storyboard = UIStoryboard(name: "StoryboardName", bundle: nil)
          let secondVC = storyboard.instantiateViewControllerWithIdentifier("anIdentifier") as! UIViewController
          presentViewController(secondVC, animated: true, completion: nil)
          
          • “StoryboardName”是故事板的名称
          • “anIdentifier”是你在storyboard中设置的UIViewController的标识符

          请查看图片在哪里设置 ViewController 的情节提要 ID:

          【讨论】:

          • 这个,抛出这个错误:由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[test.ViewReportViewController returnToOriginal:]:无法识别的选择器发送到实例0x7ba2f740'
          • 你能把你的代码贴在这里吗?
          • 是的,给我几分钟。
          • 在 appdelegate.swift 类 AppDelegate: UIResponder, UIApplicationDelegate, GADInterstitialDelegate {
          • 嗯,很难说。我发布的示例是如何在没有 segue 的情况下转换到视图控制器的标准方式,但看起来您的代码中还有其他问题。您是否达到此功能 presentViewController(secondVC, animated: true, completion: nil) ?它是否被执行了?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-23
          • 1970-01-01
          相关资源
          最近更新 更多