- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我真的很难将一个数组的内容从 View Controller 传递到另一个数组以设置 nscombobox 的内容。我已经尝试了所有我能想到的,准备segue,init;但似乎没有任何作用。程序流程如下:用户在文本字段中输入一个数字,并根据该数字创建一个具有该数字大小的数组。一旦用户按下按钮,下一个 VC 就会出现,其中有一个组合框,并且在该组合框中需要出现这些数字。我所有的尝试都会导致传递一个空数组。有人可以花点时间帮我吗?我确信我犯了一个愚蠢的错误,但不知道是什么。代码 list 如下:接受用户输入的类。在这个阶段,我试图在下一类中传递数组的内容,因为我放弃了准备继续,因为该类因零错误而崩溃。请注意,出于格式化目的,代码 list 中未注释“prepare for segue”。在我的程序中,它被注释掉了,因为我目前正在使用执行转场。任何解决方案都会很好。谢谢。
import Cocoa
class SetNumberOfFloorsVC: NSViewController {
//MARK: - Properties
@IBOutlet internal weak var declaredNumber: NSTextField!
internal var declaredFloorsArray = [String]()
private var floorValue: Int {
get {
return Int(declaredNumber.stringValue)!
}
}
//MARK: - Actions
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction private func setNumberOfFloors(_ sender: NSButton) {
if declaredNumber.stringValue.isEmpty {
let screenAlert = NSAlert.init()
screenAlert.messageText = "Please specify the number of floors!"
screenAlert.addButton(withTitle: "Got it!")
screenAlert.runModal()
} else if floorValue == 0 || floorValue < 0 {
let screenAlert = NSAlert.init()
screenAlert.messageText = "Please input a correct number of floors!"
screenAlert.addButton(withTitle: "Got it!")
screenAlert.runModal()
} else {
for i in 0...floorValue - 1 {
declaredFloorsArray.append(String(i))
}
print("\(declaredFloorsArray)")
let declareNumberOfRoomsVC = SetNumberOfRoomsForFloorVC(boxData: declaredFloorsArray)
declareNumberOfRoomsVC.boxData = declaredFloorsArray
performSegue(withIdentifier: "set number of rooms", sender: self)
}
}
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
if segue.identifier == "set number of rooms" {
if let addRoomsVC = segue.destinationController as? SetNumberOfRoomsForFloorVC {
addRoomsVC.floorBox.addItems(withObjectValues: declaredFloorsArray)
}
}
}
}
这是下一个带有组合框的 VC 的类:
import Cocoa
class SetNumberOfRoomsForFloorVC: NSViewController, NSComboBoxDelegate, NSComboBoxDataSource {
//MARK: - Properties
@IBOutlet internal weak var floorBox: NSComboBox!
@IBOutlet private weak var numberOfRoomsTxtField: NSTextField!
internal var boxData = [String]()
//MARK: - Init
convenience init(boxData: [String]) {
self.init()
self.boxData = boxData
}
//MARK: - Actions
override func viewDidLoad() {
super.viewDidLoad()
floorBox.usesDataSource = true
floorBox.dataSource = self
floorBox.delegate = self
print("\(boxData)")
}
@IBAction private func setRoomsForFloor(_ sender: NSButton) {
}
//MARK: - Delegates
func numberOfItems(in comboBox: NSComboBox) -> Int {
return boxData.count
}
func comboBox(_ comboBox: NSComboBox, objectValueForItemAt index: Int) -> Any? {
return boxData[index]
}
}
最佳答案
首先您应该删除以下代码。
let declareNumberOfRoomsVC = SetNumberOfRoomsForFloorVC(boxData: declaredFloorsArray)
declareNumberOfRoomsVC.boxData = declaredFloorsArray
我假设您认为您在此处创建的 viewController 已传递给 prepareForSegue
。但是 Storyboard会为您实例化一个新的 viewController。
之后,您需要在 prepareForSegue
中将您的 declaredFloorsArray
设置为新 viewController 的 boxData,然后就可以开始了。
关于swift - 如何使用prepare for segue 或init 设置NSComboBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42890180/
全部, 在我的应用程序中,我需要使用 NSComboBox。组合框将显示的数据需要排序。 但是查看 Apple 文档,我没有找到使控件具有 SORT 样式的方法。 任何熟悉 API 的人都可以为我指出
我对 Cocoa 还很陌生,我有一个 NSComboBox,我正在用 NSComboBoxDataSource 填充它。到目前为止一切都很好,但我还没弄清楚的一件事是可以存储什么类型的对象。我在字符串
在 Cocoa UI 控件中,我们有 NSComboBox,我想知道是否可以将其设置为像 Apple 在 OSX 系统偏好设置中使用的“组合框”一样。这些是完全可点击的(而不仅仅是最右边的箭头部分),
我正在尝试创建一个 Mac 应用程序。但是在我使用 Interface Builder 插入组合框并运行应用程序后,我收到以下消息: This application is trying to dra
当我创建 NSComboBox 并将控件尺寸设置为较小时,聚焦环未正确对齐。我在 xcode 界面中注意到同样的问题(cfr.截图)。 欢迎您的帮助。 最佳答案 我今天在 bugreport.appl
我有一个观点。如何以编程方式创建 NSComboBox 最佳答案 像 Mac OS X 一样的 ComboBox 在 iOS X 中是不可能的。您可以采取解决方法。使用图像作为背景(如组合框背景)并使
对 Mac 应用程序编程如此陌生,我遇到了一个问题。在我的 NSComboBoxes 上,它们在重新打开下拉列表时不会突出显示当前选定的项目。我可能只是瞎了眼,或者默认的突出显示颜色是透明的。我只是不
我正在尝试将自动完成功能实现到一个小应用程序中。我想让用户可以将一个城市(从一长串城市列表中)写到 NSComboBox 中。这很好,只要用户在我的城市名称数组中使用城市的准确书写。但是,如果他们出于
我有一个带有数据源的 NSComboBox,当您单击三角形并通过单击它选择其中一个项目时,它可以完美运行。但是,我还希望它允许用户在框中键入以使用自动完成来选择名称。目前,当用户键入时,我希望选择的项
我有一个包含 5 列的 NSTableView。其中一列具有 NSComboBoxCell。组合框填充了目录中一种类型的文件名称(例如 jpg)。我将文件名按字母顺序保存在 NSArray 中。我使用
如何在xcode中使用objective c和cocoa框架动态添加NSComboBox数据? -(void)awakeFromNib { NSLog(@"View controller in
我正在尝试从组合框中获取选定的字符串。字符串转换不起作用 let font = NSFont(name:String(combo_font.objectValueOfSelectedItem),
我正在使用 NSCombobox 将保存在数组中的元素呈现为下拉菜单。 单击按钮后,我的数组会更新,元素数量从 1 减少到 2,但所选元素不会更改。 详细信息: 数组中有 2 个元素:HELLO 和
我已经实现了 nscombobox 现在我想获取所选项目的索引号,这可能吗? 最佳答案 NSComboBox 有一个可以调用的方法indexOfSelectedItem NSComboBox Clas
有没有办法以编程方式关闭 NSComboBox 弹出窗口? 当弹出窗口打开时,NSComboBox 似乎存在一个错误,并且控件被删除然后释放。由于某种原因,NSComboBox 的 dealloc 在
我正在使用 NSComboBox,并希望将弹出列表中的某些项目标记为红色。我找不到在 NSComboBoxCell 中覆盖的正确方法。有什么想法吗? 最佳答案 您需要直接修改弹出按钮的菜单项,但这并不
可以很容易地为主文本区域设置截断,但弹出窗口不做任何截断,路径相似,用户无法区分哪个路径是哪个路径。 或者是更改弹出列表的宽度以匹配最长字符串以便不需要截断的方法? 最佳答案 不幸的是,没有官方方法可
我为此苦苦挣扎了一段时间,但无法找到答案。我只想将我的新应用程序上传到 iTunes,但我从以前的应用程序中知道,如果该应用程序在 macOS 深色模式下看起来不太好,Apple 会提示。嗯,除了 N
我是 Mac 开发新手。我想使用 Objective-C 在 Mac 应用程序中获取从组合框中选择的值并将其分配给标签文本。我怎样才能做到这一点? 最佳答案 以下给出了所选值: [yourComboB
我想创建一个如下所示的 NSComboBox: 点击前: 点击后: 据我所知,这个comboBox可以使用Java来实现。我创建了一个快速 JFrame,添加了一个 JCombobox,并获得了相同的
我是一名优秀的程序员,十分优秀!