繁体   English   中英

快速在UITableView中选择单元格时如何更改按钮名称?

[英]How to change button name when cell selected in UITableView in swift?

我有两个UIButton ,当您单击每个UIButton时,您将进入表视图控制器,然后可以在其中进行选择。

我的问题是如何在选择任何单元格时更改按钮标题。 我想用所选单元格的名称替换按钮标题。

在此处输入图片说明

有两种方法可以将数据传递回先前的viewController。

1)使用委托,检查

2)使用通知,检查

  1. 将单元格中的按钮绑定为@IBOutlet
  2. 当单元格选择委托方法tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 在这里,您可以使用[tableView cellForRowAtIndexPath:indexPath]获取单元格
  3. 更改按钮的标题[cell.yourButton setTitle...]

如果要将导航控制器置于根视图控制器中,然后将希望从中访问按钮的视图控制器作为其顶部视图控制器,那么在轻按单元格时可以执行以下操作:

if let topVC = navigationController?.topViewController as? MyButtonViewController {
    topVC.button1Name.setTitle("New Title", forState: .Normal)
}

然后,您可以使用以下命令隐藏顶视图控制器上的导航栏:

override func viewWillAppear(animated: Bool) {
    navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(animated: Bool) {
    navigationController?.setNavigationBarHidden(false, animated: animated)
}

代替使用两个导航控制器,您可以使用单个NavC,然后使用两个按钮作为根视图控制器来使您的视图控制器成为可能。 然后,当按下按钮时,您将加载适当的表视图控制器。 同样,如果您的表视图控制器具有相同的数据源,那么您可以使用单个表视图控制器本身。

然后,根据按下哪个按钮,您按下适当的表视图控制器,但是在prepareForSegue跟踪按下的按钮,以便在表视图控制器中选择单元格时可以更改其标题。

要从表视图控制器传递选定的单元格详细信息,可以使用视图控制器可以实现的委托,表视图控制器将调用并传递选定的单元格详细信息。

简而言之,做到这一点。

  1. 使navC成为初始视图控制器。
  2. 使用两个按钮使您的视图控制器成为navC的根视图控制器
  3. 在两个按钮的IBAction中,存储了按下了哪个按钮,以便您知道必须更改哪个按钮的标题。
  4. 加载表视图控制器时,将视图控制器设置为自定义委托。
  5. 在语言列表表中,视图控制器的didSelectRowWithIndexPath使用委托传递所选的单元格信息并弹出视图控制器。
  6. 在视图控制器的委托方法中,将您在步骤3中存储的按钮标题更改为所选单元格的文本。

我有另一个解决方案,我已经在这里上传了。 除了具有两个按钮的ViewController之外,它不包含任何自定义视图控制器。 它利用了segues和unwind segues。

http://www.filedropper.com/twobuttonnavc

暂无
暂无

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

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