视图和Storyboard

一.创建用户界面:

  • .xib文件
  • .storyboard文件

二.定义主用户界面:

三.展示多个.xib文件

  1. 创建一个视图(或者说窗口)控制器(NSWindowController)和.xib文件;
  2. 创建视图控制器实例对象;
  3. 使用showWindow(sender: AnyObject?)close()方法来打开和关闭.xib文件

AppDelegate.swift文件

import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    @IBOutlet weak var window: NSWindow!
    var windowController=SecondController(windowNibName: "SecondController")
    func applicationDidFinishLaunching(aNotification: NSNotification) {
    }
    func applicationWillTerminate(aNotification: NSNotification) {
    }
    @IBAction func openWindow(sender: NSButton) {
        windowController.showWindow(sender)
    }
}

SecondController.swift文件

import Cocoa
class SecondController: NSWindowController {
    override func windowDidLoad() {
        super.windowDidLoad()
    }
    @IBAction func closeWindow(sender: AnyObject) {
        self.close()
    }
}

四.使用Storyboard

Storyboard(故事板)由两部分组成:

  • Scenes:展示你应用界面的窗口
  • Segues:定义场景之间的转场

当场景进行切换的时候,会调用下面的方法:

func prepareForSegue(segue: NSStoryboardSegue, sender: AnyObject?)

在场景间传递数据:

  • 在第一个场景中,创建prepareForSegue方法,使用segue.destinationViewController来获取第二个场景的视图控制器名字,给representedObject属性分配一个值。
  • 在第二个场景中,声明一个变量来接收从第一个场景传过来的值,对representedObject进行拆包取值。

ViewController.swift代码

import Cocoa

class ViewController: NSViewController {

    @IBOutlet weak var textInput: NSTextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        print("viewController-viewDidLoad")
    }

    override var representedObject: AnyObject? {
        didSet {
        }
    }

    override func prepareForSegue(segue: NSStoryboardSegue, sender: AnyObject?) {

        let secondScene=segue.destinationController as! First_secondView
        secondScene.representedObject = textInput.stringValue

    }


}

First_secondView.swift代码

import Cocoa

class First_secondView: NSViewController {
    @IBOutlet weak var infoDetail: NSTextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        print("First_secondView-viewDidLoad")
        infoDetail.stringValue=self.representedObject! as! String
    }

}

效果如图:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值