swift:点击按钮时继续
swift: segue on button click
我想使用 segue 在单击按钮时移动到下一个控制器。我需要获取下一个控制器中的按钮数量。
这是来自我的控制器的代码:
import UIKit
class ViewController2: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tblTable: UITableView!
var buttonTitles = ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten"]
override func viewDidLoad() {
super.viewDidLoad()
tblTable.delegate = self
tblTable.dataSource = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return buttonTitles.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "buttoncell") as! ButtonCell
let buttonTitle: String = buttonTitles[indexPath.row]
cell.btnButton.setTitle(buttonTitle, for: .normal)
cell.btnButton.tag = indexPath.row
cell.btnButton.addTarget(self, action: #selector(self.buttonClick(button:)), for: .touchUpInside)
cell.selectionStyle = .none
return cell
}
@objc func buttonClick(button: UIButton) -> Void {
print("btnButton clicked at index - \(button.tag)")
button.isSelected = !button.isSelected
if button.isSelected {
button.backgroundColor = UIColor.green
} else {
button.backgroundColor = UIColor.yellow
}
}
}
class ButtonCell: UITableViewCell {
@IBOutlet var btnButton: UIButton!
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
if selected {
btnButton.backgroundColor = UIColor.green
} else {
btnButton.backgroundColor = UIColor.yellow
}
}
override func setHighlighted(_ highlighted: Bool, animated: Bool) {
super.setHighlighted(highlighted, animated: animated)
if highlighted {
btnButton.backgroundColor = UIColor.green
} else {
btnButton.backgroundColor = UIColor.yellow
}
}
}
如何用我的代码解决问题?
您需要使用 performSegueWithIdentifier("yourSegue", sender: sender)
来继续事件。这需要您的 segue 标识符代替 "yourSegue".
这将进入您在用户按下按钮时调用的函数。如果您需要将按钮点击量发送到新的视图控制器,那么我会做类似的事情:
let secondViewController = segue.destination as! ViewController
secondViewController.buttonClicks = myButtonClicks
很简单。
按照以下步骤从您的 tableview 单元格按钮(单击)创建 segue。
- 打开故事板布局(视图控制器)
- 添加新的(目标)视图控制器。
- Select 你的按钮。
- 按住键盘上的控制
ctrl
按钮并将鼠标光标从您的按钮拖动到新的(目标)视图控制器。
- 现在将以下代码添加到您的源视图控制器文件(源代码)
-
override func performSegue(withIdentifier identifier: String, sender: Any?) {
print("segue - \(identifier)")
if let destinationViewController = segue.destination as? <YourDestinationViewController> {
if let button = sender as? UIButton {
secondViewController.<buttonIndex> = button.tag
// Note: add/define var buttonIndex: Int = 0 in <YourDestinationViewController> and print there in viewDidLoad.
}
}
}
另一种处理方式。
我想使用 segue 在单击按钮时移动到下一个控制器。我需要获取下一个控制器中的按钮数量。
这是来自我的控制器的代码:
import UIKit
class ViewController2: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tblTable: UITableView!
var buttonTitles = ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten"]
override func viewDidLoad() {
super.viewDidLoad()
tblTable.delegate = self
tblTable.dataSource = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return buttonTitles.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "buttoncell") as! ButtonCell
let buttonTitle: String = buttonTitles[indexPath.row]
cell.btnButton.setTitle(buttonTitle, for: .normal)
cell.btnButton.tag = indexPath.row
cell.btnButton.addTarget(self, action: #selector(self.buttonClick(button:)), for: .touchUpInside)
cell.selectionStyle = .none
return cell
}
@objc func buttonClick(button: UIButton) -> Void {
print("btnButton clicked at index - \(button.tag)")
button.isSelected = !button.isSelected
if button.isSelected {
button.backgroundColor = UIColor.green
} else {
button.backgroundColor = UIColor.yellow
}
}
}
class ButtonCell: UITableViewCell {
@IBOutlet var btnButton: UIButton!
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
if selected {
btnButton.backgroundColor = UIColor.green
} else {
btnButton.backgroundColor = UIColor.yellow
}
}
override func setHighlighted(_ highlighted: Bool, animated: Bool) {
super.setHighlighted(highlighted, animated: animated)
if highlighted {
btnButton.backgroundColor = UIColor.green
} else {
btnButton.backgroundColor = UIColor.yellow
}
}
}
如何用我的代码解决问题?
您需要使用 performSegueWithIdentifier("yourSegue", sender: sender)
来继续事件。这需要您的 segue 标识符代替 "yourSegue".
这将进入您在用户按下按钮时调用的函数。如果您需要将按钮点击量发送到新的视图控制器,那么我会做类似的事情:
let secondViewController = segue.destination as! ViewController
secondViewController.buttonClicks = myButtonClicks
很简单。
按照以下步骤从您的 tableview 单元格按钮(单击)创建 segue。
- 打开故事板布局(视图控制器)
- 添加新的(目标)视图控制器。
- Select 你的按钮。
- 按住键盘上的控制
ctrl
按钮并将鼠标光标从您的按钮拖动到新的(目标)视图控制器。 - 现在将以下代码添加到您的源视图控制器文件(源代码)
-
override func performSegue(withIdentifier identifier: String, sender: Any?) {
print("segue - \(identifier)")
if let destinationViewController = segue.destination as? <YourDestinationViewController> {
if let button = sender as? UIButton {
secondViewController.<buttonIndex> = button.tag
// Note: add/define var buttonIndex: Int = 0 in <YourDestinationViewController> and print there in viewDidLoad.
}
}
}
另一种处理方式。