Swift // NSPopUpButton .addingItems() 问题
Swift // NSPopUpButton .addingItems() problems
我搜索了很多,但没有找到任何东西..
我是编程界的新手,我正在 Xcode 上编写一些 macOS 软件。但是有一个问题:
当在弹出菜单 n°1 中选择指定项目时,我想在清除菜单后将项目添加到弹出菜单 n°2 (NSPopUpButton)。所以我对两者都做了一个出口并编写了 if 语句,但它不起作用。
在应用程序中,当第一个指定的项目被选中时(因为应用程序启动时第一个项目已经被选中),弹出菜单 n°2 显示的是我想要的,但如果我将项目更改为 "item 2"(或者在我的例子中是 "Uncommon" 而不是 "Common")没有任何反应。
image showing "Common" selected when app starts // image showing "Uncommon" selected with same results than before 我认为发生这种情况是因为我的第一个 'if' 语句的主体已执行,所以其他语句没有执行,但我不知道如何修复它。我尝试使用 'switch' 而不是 'if' 或 'if/else if/else' 语句,但它不起作用。我还尝试使每个 if 语句成为函数,但没有任何反应。
我希望你能帮助我。谢谢大家。
@IBOutlet weak var ingredientRarityNorthlands: NSPopUpButton!
@IBOutlet weak var ingredientListNorthlands: NSPopUpButton!
override func viewDidLoad() {
super.viewDidLoad()
if ingredientRarityNorthlands.titleOfSelectedItem == "Common" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsCommon)
}
if ingredientRarityNorthlands.titleOfSelectedItem == "Uncommon" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsUncommon)
}
if ingredientRarityNorthlands.titleOfSelectedItem == "Rare" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsRare)
}
}
let ingredientListNorthlandsCommon = ["ok", "ko"]
let ingredientListNorthlandsUncommon = ["grer", "egr"]
let ingredientListNorthlandsRare = ["ok", "okk"]
好的,我解决了这个问题,就像将我的 'if' 语句放在“@IBAction func myPopUp(_ sender: NSPopUpButton)”的正文中一样简单。昨天的深夜简直让我太累了,无法想到用这种方式解决问题。这是为遇到相同问题的人修改的代码:
@IBAction func ingredientRarityNorthlands(_ sender: NSPopUpButton) {
if ingredientRarityNorthlands.titleOfSelectedItem == "Common" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsCommon)
}
if ingredientRarityNorthlands.titleOfSelectedItem == "Uncommon" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsUncommon)
}
if ingredientRarityNorthlands.titleOfSelectedItem == "Rare" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsRare)
}
}
我搜索了很多,但没有找到任何东西.. 我是编程界的新手,我正在 Xcode 上编写一些 macOS 软件。但是有一个问题: 当在弹出菜单 n°1 中选择指定项目时,我想在清除菜单后将项目添加到弹出菜单 n°2 (NSPopUpButton)。所以我对两者都做了一个出口并编写了 if 语句,但它不起作用。 在应用程序中,当第一个指定的项目被选中时(因为应用程序启动时第一个项目已经被选中),弹出菜单 n°2 显示的是我想要的,但如果我将项目更改为 "item 2"(或者在我的例子中是 "Uncommon" 而不是 "Common")没有任何反应。 image showing "Common" selected when app starts // image showing "Uncommon" selected with same results than before 我认为发生这种情况是因为我的第一个 'if' 语句的主体已执行,所以其他语句没有执行,但我不知道如何修复它。我尝试使用 'switch' 而不是 'if' 或 'if/else if/else' 语句,但它不起作用。我还尝试使每个 if 语句成为函数,但没有任何反应。 我希望你能帮助我。谢谢大家。
@IBOutlet weak var ingredientRarityNorthlands: NSPopUpButton!
@IBOutlet weak var ingredientListNorthlands: NSPopUpButton!
override func viewDidLoad() {
super.viewDidLoad()
if ingredientRarityNorthlands.titleOfSelectedItem == "Common" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsCommon)
}
if ingredientRarityNorthlands.titleOfSelectedItem == "Uncommon" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsUncommon)
}
if ingredientRarityNorthlands.titleOfSelectedItem == "Rare" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsRare)
}
}
let ingredientListNorthlandsCommon = ["ok", "ko"]
let ingredientListNorthlandsUncommon = ["grer", "egr"]
let ingredientListNorthlandsRare = ["ok", "okk"]
好的,我解决了这个问题,就像将我的 'if' 语句放在“@IBAction func myPopUp(_ sender: NSPopUpButton)”的正文中一样简单。昨天的深夜简直让我太累了,无法想到用这种方式解决问题。这是为遇到相同问题的人修改的代码:
@IBAction func ingredientRarityNorthlands(_ sender: NSPopUpButton) {
if ingredientRarityNorthlands.titleOfSelectedItem == "Common" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsCommon)
}
if ingredientRarityNorthlands.titleOfSelectedItem == "Uncommon" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsUncommon)
}
if ingredientRarityNorthlands.titleOfSelectedItem == "Rare" {
ingredientListNorthlands.removeAllItems()
ingredientListNorthlands.addItems(withTitles: ingredientListNorthlandsRare)
}
}