我的UINavigationBar
上有一个按钮,我使用此代码创建了该按钮:
let inputLabel = UIBarButtonItem(title: userInput, style: .plain, target: self, action: #selector(inputLabelButtonTapped))
我想根据用户输入的内容制作inputLabel.text
。以下是我想象的inputLabelButtonTapped
函数,但我无法对其进行编码:
inputLabelButtonTapped() {
// Have a keyboard/numberpad appear on the screen
// Save the what the user types on the screen to a newUserInputVariable
// Make the inputLabel.text = newUserInputVariable
}
提前致谢。
答案 0 :(得分:0)
您似乎与UIBarButtonItem
和UILabel
不匹配。前者是一个可以放在UINavigationController
或UITabBarController
中的按钮。后者只显示文字。
通过向ViewController添加UITextField
或UIAlertViewController
来实例化输入字段:
var barButtonItemTitle = String()
// create the alert controller
let ac = UIAlertController(title:"<SomeName>",
message: "<SomeMessage>",
preferredStyle: UIAlertControllerStyle.alert)
使用完成处理程序向UIAlertAction
添加UIAlertViewController
,以便您更新barButtonItemTitle
let action = UIAlertAction(title: "OK", style: .default) { _ in
//Add a textfield to the alert controller:
ac.addTextField
当您向UITextField
添加UIAlertController
时,如果[TextFields]
存在,它将显示在// Unwrap the textfield array and the first item there and access the text property.
guard let inputText = ac.textFields?.first?.text else {return}
中。
barButtonText = inputText
}
// Add action to the controller & present the view.
ac.addAction(action)
present(ac, animated: true)
将barButtonText属性设置为拉出的文本
UIBarButtonItem
使用新值更新barButtonText后,您可以使用该属性创建let barButton = UIBarButtonItem(title: barButtonText, style: .plain, target: nil, action: nil)
的实例并将其放置在任何位置。
TwoViewController
您可以将所有内容包装到分配给视图的func中