测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年10月 |
SwiftSwift版本 | 4.0 |
SPM支持SPM | ✗ |
由Charles Kenney维护。
CKNavigationController
Cocoa开发的 UINavigationController 端口
要使用CocoaPods将CKNavigation集成到您的Xcode项目中,在Podfile中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :osx, '10.12'
target 'TargetName' do
pod 'CKNavigation', '~> 0.1.1'
end
CKNavigationController
旨在为单个NSWindow
提供导航,类似于UIKit中的iOS中的UINavigationController
。这对于分离低配置状态栏应用中的视图等是一个很好的解决方案。
实现CKNavigationController
与iOS中的UINavigationController
完全相同。只需调用初始化器,并传入您想要设置为根的控制器。注意:为了将视图控制器添加到导航控制器,视图控制器必须继承自CKNavigatableViewController
或显式遵循CKNavigatable
协议。
import CKNavigation
let myController = MyViewController()
let myNavigationController = CKNavigationController(rootViewController: myController)
这种方法非常适合程序化用户界面。您可以简单地创建一个NSWindow
实例,并将您的导航控制器作为子视图添加。
import Foundation
import Cocoa
import CKNavigation
class AppDelegate: NSObject, NSApplicationDelegate {
var navigationController: CKNavigationController!
let controller = ViewController()
let window: NSWindow {
let content = NSRect(x: 0, y: 0, width: 500, height: 500)
let window = NSWindow(contentRect: content, styleMask: .closable, backing: .buffered, defer: false)
return window
}()
func applicationDidFinishLaunching(_ aNotification: Notification) {
// initialize navigation controller with root view
navigationController = CKNavigationController(rootViewController: controller)
// add navigation controller to the window
window.contentView?.addSubview(navigationController.view)
navigationController.view.wantsLayer = true
window.makeKeyAndOrderFront(nil)
}
}
要将视图控制器推入堆栈,同样也很容易。在myViewController
类内部执行
@objc func handleNextButtonPress(_ sender: Any?) {
let newController = AnotherViewController()
self.navigationController!.pushViewController(newController)
}
同样,要从不带视图控制器中弹出
@objc func handlePreviousButtonPress(_ sender: Any?) {
self.navigationController!.popViewController()
}
您在上面的演示GIF中看到的示例,在顶部可在此处获得这里。此实现是100%程序化的。
MIT © Charles Kenney