动态调入xib视图

      目标是这样。程序有几种状态,左边是主窗口,右侧是一个控制盘。我的想法是对应不同的状态显示不同的控制盘,也就是说,有n个xib文件来展现这个控制盘。这是动态的。接下来就遇到一个问题。如果向一个视图里面添加另一个xib视图。从结果来,其实这件事情相当简单,也没有什么难度。我因为走了弯路遇到了很多问题。

     界面上我没遇到什么困难,界面很容易就显示出来了。但是当我点击控制盘里面的按钮时候,弹出异常,程序崩溃了。

     我的第一感是系统无法找到 我们的viewController,所以我查资料添加了     

  self.contentViewController?.addChildViewController(panelViewController!)
  这样依然没有用。


    func reInstallPanels(){
        if panelState == nil {
            panelViewController = GoNewController(nibName: "GoNewController", bundle: nil)
            
            
        有错误时候的代码
      //    let panelViewController = GoNewController(nibName: "GoNewController", bundle: nil)
      //    self.contentViewController?.addChildViewController(panelViewController!)
            panelFrameView.addSubview(panelViewController!.view)
            panelViewController!.view.frame = panelFrameView.bounds

            panelState = GoNewState.self
        }
    }

正确地做法其实就是:把let 去掉。然后增加一行定义。

class GoWindowController:NSWindowController, NSWindowDelegate {

    var panelViewController : GoNewController?


就是这个,这个变量被释放掉了,所以产生了错误。我当时有一个错误的印象,认为view里面一定会保留 GoNewController 的引用。所以变量不会被释放。所以没有往这方向想。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值