我有一个需要创建动态标签的程序,并在每个标签中将相关数据放入该标签。
出于测试目的,我试图创建一个动态创建1个选项卡的程序,并通过调用函数显示相关数据。
它有两个类:TabsController
连接到stoty board上的Tab Controller,PageController
是应该创建动态选项卡的类。
问题是,我确实设法制作动态页面,但是尝试更新标签文本不会更新它 - 它保持“Test”值。我可能会把页面生命周期搞得一团糟,但我无法理解。
TabsController:
import Cocoa
class TabsController: NSTabViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear() {
super.viewWillAppear()
let page1 = PageController()
page1.changePageNum("1")
self.addChildViewController(page1)
}
}
的PageController:
import Cocoa
class PageController: NSViewController {
var lblHeader = NSTextField(frame: NSMakeRect(20, 20, 120, 20))
override func viewDidLoad() {
super.viewDidLoad()
self.lblHeader.stringValue = "Test"
self.view.addSubview(self.lblHeader)
}
func changePageNum(_ pageNum: String) {
self.title = "Page \(pageNum)"
self.lblHeader.stringValue = "Page \(pageNum)"
}
}
虽然我在那,但我很难找到mac os swift编程的文献。通常我发现的是面向ObjC或iOS。有人知道这个的好消息吗?
感谢。
答案 0 :(得分:1)
每次出现视图时,您都会分配一个新的PageController
。你最终会得到数百PageController
个。将其分配为变量,并将其作为子项添加到viewDidLoad
:
class TabsController: NSTabViewController {
var pageController = PageController()
override func viewDidLoad() {
super.viewDidLoad()
pageControler.changePageNum("1")
self.addChildViewController(page1)
}
}
Ray Wenderlich有很好的Swift文学:
https://store.raywenderlich.com/