会喜欢传递值postArray [indexpath.row] .creatorId当tapview一个tableview单元格内的标签时,它可以传递到下一个视图控制器,这样我就可以加载该特定创建者/用户的配置文件。我使用了自定义单元格,因此如何根据所选标签(用户名)的位置获取创建者ID。
bind_param("ssi", $string, $string, $number);
答案 0 :(得分:0)
以此为例 实现didSelectRow()方法并在其中编写如下内容:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// this method works, when you taped cell. write here code of you need. Next code only example, which set user info to some VC and push it:
let controller = UserController as? UserController
if let controller = controller {
controller.user = users[indexPath.row]
self.navigationController?.pushViewController(controller, animated: true)
}
}
将此添加到您的Cell类中:
func setTap() {
let tap = UITapGestureRecognizer(target: self, action: #selector(tapRecognized))
self.label.addGestureRecognizer(tap)
tap.numberOfTapsRequired = 1
}
@objc func tapRecognized(sender: UITapGestureRecognizer) {
// here your code of tap on label
print("label tapped")
}
检查storyBoard是你的标签isUserInteractionEnabled? - 将其设置为true。在tapRecodnized()方法里面做你需要的东西。你需要在你的单元格方法中调用方法setTap(),你在tableView中调用它(_ tableView:UITableView,cellForRowAt indexPath:IndexPath) - > UITableViewCell中。
更新
简单的例子。这段代码知道你点了什么。如果你点击单元格,但没有标签,添加推送一些控制器的代码,否则推动另一个控制器的代码 Cell's Class:
class MyTableViewCell: UITableViewCell {
@IBOutlet weak var label: UILabel!
var mainController: ViewController?
func setText(text: String) {
setTap()
label.text = text
}
func setTap() {
let tap = UITapGestureRecognizer(target: self, action: #selector(tapRecognized))
self.label.addGestureRecognizer(tap)
tap.numberOfTapsRequired = 1
}
@objc func tapRecognized(sender: UITapGestureRecognizer) {
if let mainController = mainController {
print("label tapped")
mainController.pushSomeVc(cell: self)
}
}
}
主要类别代码:
class ViewController: UIViewController {
@IBOutlet weak var myTableView: UITableView!
var array = ["1", "2", "3", "4", "5", "6"]
override func viewDidLoad() {
super.viewDidLoad()
}
func pushSomeVc(cell: MyTableViewCell) {
let row = myTableView.indexPath(for: cell)?.row
if let row = row {
// write here code of push controller, when label tapped. row property for get some user from array
print("push some vc with \(row)")
}
}
}
extension ViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return array.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = myTableView.dequeueReusableCell(withIdentifier: "cell") as? MyTableViewCell
if let cell = cell {
cell.setText(text: array[indexPath.row])
cell.mainController = self
}
return cell ?? UITableViewCell()
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: false)
// write here code of push controller with comments
print("cell tapped: \(indexPath.row)")
}
}
我测试了这段代码,它的工作非常完美