如何从单个tableViewcell获取多个按钮?
我在一个有4个按钮(选项)的tableView
中进行测验,我在201,202,203,204这样的故事板上标记它们,并在tableView
方法中成功地完成了所有这些测试。 但是在向按钮添加目标后,我无法在buttonClicked
方法中获得特定按钮。
func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return questions.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell (cell.viewWithTag(100) as! UILabel).text = "Q : " + (questions[indexPath.row].objectForKey("MocQuestion")! as? String)! (cell.viewWithTag(100) as! UILabel).font = themeFont (cell.viewWithTag(101) as! UILabel).text = questions[indexPath.row].objectForKey("Op1")! as? String (cell.viewWithTag(102) as! UILabel).text = questions[indexPath.row].objectForKey("Op2")! as? String (cell.viewWithTag(103) as! UILabel).text = questions[indexPath.row].objectForKey("Op3")! as? String (cell.viewWithTag(104) as! UILabel).text = questions[indexPath.row].objectForKey("Op4")! as? String let btn1 = (cell.viewWithTag(201) as! UIButton) let btn2 = (cell.viewWithTag(202) as! UIButton) let btn3 = (cell.viewWithTag(203) as! UIButton) let btn4 = (cell.viewWithTag(204) as! UIButton) // btn1.tag = indexPath.row * 100 + 0 // btn1.tag = indexPath.row * 100 + 1 // btn1.tag = indexPath.row * 100 + 2 // btn1.tag = indexPath.row * 100 + 3 btn1.addTarget(self, action: #selector(Quiz.buttonClicked(_:)),forControlEvents: UIControlEvents.TouchUpInside) btn2.addTarget(self, action: #selector(Quiz.buttonClicked(_:)),forControlEvents: UIControlEvents.TouchUpInside) btn3.addTarget(self, action: #selector(Quiz.buttonClicked(_:)),forControlEvents: UIControlEvents.TouchUpInside) btn4.addTarget(self, action: #selector(Quiz.buttonClicked(_:)),forControlEvents: UIControlEvents.TouchUpInside) return cell } func buttonClicked(sender:UIButton) { let tag = sender.tag print(tag) }
如果您希望indexPath
访问问题Array
那么您可以尝试这样做。
func buttonClicked(sender:UIButton) { let center = sender.center let point = sender.superview!.convertPoint(center, toView:self.tableView) let indexPath = self.tableView.indexPathForRowAtPoint(point) //Now you have tag of button check for that if (sender.tag == 201) { print("Option A") } else if (sender.tag == 202) { print("Option B") } else if (sender.tag == 203) { print("Option C") } else { print("Option D") } print(question[indexPath.row]) }
为了获得每个问题单独的按钮click event
您可以将唯一ID作为后缀或前缀,例如每个问题的20101或01201作为按钮的标记而不是硬编码。 然后获取标签并首先提取问题ID,然后按照问题进行检查。
在swift 3你可以尝试吼一声
-
我的表格单元类
class Custom_Cell: UITableViewCell { @IBOutlet weak var ButtonA: UIButton! @IBOutlet weak var ButtonB: UIButton! @IBOutlet weak var ButtonC: UIButton! }
-
在表视图中设置标记
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! Custom_Cell; cell.ButtonA.tag = indexPath.row; cell.ButtonB.tag = indexPath.row; cell.ButtonA.tag = indexPath.row; //Add Action Methods to UIButtons cell.ButtonA.addTarget(self, action: #selector(ButtonAAction), for: .touchUpInside) cell.ButtonB.addTarget(self, action: #selector(ButtonBAction), for: .touchUpInside) cell.ButtonA.addTarget(self, action: #selector(ButtonCAction), for: .touchUpInside) return cell; }
-
按钮操作看起来像..
func ButtonAAction(_ sender: Any) { //Get Button cell position. let ButtonPosition = (sender as AnyObject).convert(CGPoint.zero, to: tableView) let indexPath = tableView.indexPathForRow(at: ButtonPosition) if indexPath != nil { print("Cell indexPath: \(indexPath?.row)") } }
- 在从ios应用程序注册QuickBlox中的新用户时终止应用程序
- UITabBar徽章在iOS7中的位置
- 模糊效果 – 背景UITextField
- UICollectionView cellForItem调用不正确
- 设备通知或值更改,find它在其他设备
- 如何使用UIPageViewController来显示上一个和下一个视图的一部分
- UIViewController:extendedLayoutIncludesOpaqueBars和滚动视图偏移量
- 苹果Mach-O链接器(id)警告:为MacOSX构build,但链接到为iOS构build的dylib
- 为什么在我打开localNotification中的string数组时返回nil?