繁体   English   中英

使用iOS Swift隐藏三个按钮中的一个按钮

[英]Hiding one button out of three buttons using iOS Swift

我有一个大约5个单元格(行)的UITableView。 每个单元格(行)都添加了三个UIButton作为各自单元格的子视图。

Row1: Button1 Button2 Button3 //所有这些按钮都具有tag = row_number = 1

第2行: Button1 Button2 Button3 //所有这些按钮都具有tag = row_number = 2

Row3: Button1 Button2 Button3 //所有这些按钮都具有tag = row_number = 3

第4行: Button1 Button2 Button3 //所有这些按钮都具有tag = row_number = 4

注意:所有行的Buttons1连接到相同的IBAction。 类似地,所有行的Buttons2连接到相同的IBAction。 等等...我完全能够检测到某个单元格中按下了哪个按钮。 我为此使用标签。

我要执行以下操作:

  1. 如果连续按下某个按钮,则该按钮应在按下时隐藏,而同一行中的所有其他按钮应保持显示状态。 一段时间后,如果从同一行按下了另一个按钮,则新按下的按钮应隐藏,而先前隐藏的按钮应返回到视图。

目前,我可以隐藏第一个按下的按钮,但是如果之后再按下同一行中的另一个按钮,则无法将其恢复。

  1. 是否还可以在同一行内跟踪先前按下的按钮?

请指导我如何执行此操作。

提前致谢。

由于您的问题只会一次影响单个单元格,因此我们可以专注于一个单元格。

您应该使用UITableViewCell子类,该子类保留对其按钮的引用,并且是其操作的target

因此,该子类可以管理所有与视图相关的界面更改,并且封装得很好。

然后,您可以使用委派将动作传播到视图控制器并处理实际逻辑。

编辑

关于第二个问题,通过此设置,可以通过在每次按下时将每个按钮的索引附加到[Int]上来轻松跟踪单元格中按钮的按下顺序。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
 {
  let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomCell



  // add a line for each one of the buttons
   cell.btn1.addTarget(self, action: "handleButtonPressed:", forControlEvents: .TouchUpInside)
   cell.btn2.addTarget(self, action: "handleButtonPressed:", forControlEvents: .TouchUpInside)
   cell.btn3.addTarget(self, action: "handleButtonPressed:", forControlEvents: .TouchUpInside)
   cell.btn4.addTarget(self, action: "handleButtonPressed:", forControlEvents: .TouchUpInside)


   return cell
  }

   @IBAction func handleButtonPressed(sender:UIButton!)
 {

 switch sender.tag {

   let button = sender as! UIButton
   let view = button.superview!
   let cell = view.superview as! custom cell
  // cell.btn1  - will get here 
  //cell.btn2 - will get here
  // do based on what on button action hide or show
  case 0:
  print(sender.tag)

  case 1:
  print(sender.tag)
  case 2:
  print(sender.tag)
  case 3:
  print(sender.tag)

    default:
    print("Tag was not found")
   }
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM