gpt4 book ai didi

快速更改动态创建的标签

转载 作者:行者123 更新时间:2023-11-28 06:19:46 25 4
gpt4 key购买 nike

我有一个程序需要创建动态选项卡,并在每个选项卡中将相关数据放入该选项卡。出于测试目的,我尝试制作一个动态创建 1 个选项卡的程序,并应通过调用函数显示相关数据。它有 2 个类:TabsController,它连接到 stoty 板上的 Tab Controller,以及 PageController,它是应该创建动态选项卡的类。

问题是,我确实设法制作了动态页面,但尝试更新标签文本并没有更新它——它保持“测试”值。我可能搞砸了页面生命周期,但我不明白是什么。

选项卡 Controller :

import Cocoa

class TabsController: NSTabViewController {

override func viewDidLoad() {
super.viewDidLoad()
}

override func viewWillAppear() {
super.viewWillAppear()
let page1 = PageController()
page1.changePageNum("1")
self.addChildViewController(page1)
}
}

页面 Controller :

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 的。有人知道这方面的好来源吗?

谢谢。

最佳答案

每次您的 View 出现时,您都在分配一个新的 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/

关于快速更改动态创建的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43998465/

25 4 0