首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导航到同一窗口中的不同视图控制器

导航到同一窗口中的不同视图控制器
EN

Stack Overflow用户
提问于 2016-03-17 12:02:29
回答 2查看 768关注 0票数 0

我用Xcode 7.2.1创建了一个OS X Cocoa应用程序。我给Main.storyboard上的默认视图控制器一个"view1“的Storyboard ID。我添加了另一个视图控制器,并给它一个Storyboard ID "view2“。我在"view1“中添加了一个按钮,并将操作链接到ViewController.swift,并添加了以下代码:

代码语言:javascript
复制
@IBAction func view1Button(sender: AnyObject) {

    for v in view.subviews {
        v.removeFromSuperview()
    }

    let mainStoryboard: NSStoryboard = NSStoryboard(name: "Main", bundle: nil)
    let sourceViewController = mainStoryboard.instantiateControllerWithIdentifier("view2")
    self.view.addSubview(sourceViewController.view)
}

当我按下"view1“上的按钮时,一切都正常工作。"view1“被删除,而"view2”出现在同一个窗口中。

在"view2“上,我也做了同样的事情。添加了一个按钮,并将操作链接到ViewController2.swift,并添加了以下代码:

代码语言:javascript
复制
@IBAction func view2Button(sender: AnyObject) {

    for v in view.subviews {
        v.removeFromSuperview()
    }

    let mainStoryboard: NSStoryboard = NSStoryboard(name: "Main", bundle: nil)
    let sourceViewController = mainStoryboard.instantiateControllerWithIdentifier("view1")
    self.view.addSubview(sourceViewController.view)
}

它不能像预期的那样工作。当我单击"view2“上的按钮时,应用程序崩溃并收到以下错误:”Thread1: EXC_BAD_ACCESS (code=1,address=...).我不明白为什么这不能像预期的那样工作?

EN

回答 2

Stack Overflow用户

发布于 2016-03-17 12:18:20

我怀疑崩溃的原因是没有对sourceViewController (在view2Button(_:)中实例化)的强引用。您将其视图作为子视图添加,这会将视图保留在内存中,但是一旦操作方法返回,就不会有对视图控制器的强引用,因此当操作消息从按钮发送时,没有视图控制器可以接收它。

从这段代码的细节出发,我建议做一些研究-在OS X的Cocoa编程中,你试图实现的是“视图交换”;在iOS中,它是“视图控制器包含”。通常情况下,如果有一个父视图控制器来进行交换,效果会更好。如果你手头上有OS X第五版的Cocoa编程,请看一下第31章。但是,如果您不这样做,您也可以查看sample code for that chapter。尽管如此,我还是建议看看这本书(免责声明:我是这本书的合著者)。

票数 0
EN

Stack Overflow用户

发布于 2016-03-17 12:18:46

只是为了澄清一下,你使用的是Xibs (或Nibs)还是故事板?

如果您使用的是故事板,则与单个控制器的工作方式略有不同。它们会根据自己的意愿(按照预期的顺序)单独加载,并需要相应地进行处理。

因此,如果使用故事板(我认为您在开始时也是如此,请让我们知道)。

这一切都是不同的,这取决于你的控制器是如何安排的…

序列图像板如下所示(例如):

请参阅链接等。在视图之间?

剩下的..。如下所示( xibs):

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36051445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档