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

时间:2016-03-05 10:56:53

标签: ios swift uitableview uibutton

我有两个UIButton,当您点击每个{{1}}时,您将转到表视图控制器,在那里您可以选择一些内容。

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

enter image description here

4 个答案:

答案 0 :(得分:2)

有两种方法可以将数据传回上一个viewController。

1)使用代表,检查this

2)使用通知,检查this

答案 1 :(得分:1)

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

答案 2 :(得分:1)

如果您要将导航控制器设置到根视图控制器中并将想要访问按钮的视图控制器作为其顶视图控制器,那么您可以在点击单元格时执行以下操作:

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)
}

答案 3 :(得分:0)

您可以使用单个NavC,而不是使用两个导航控制器,然后使用两个按钮作为根视图控制器创建视图控制器。然后按下按钮时,加载相应的表视图控制器。此外,如果您的表视图控制器具有相同的数据源,那么您可以使用单个表视图控制器本身。

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

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

所以简而言之。

  1. 将您的navC设为初始视图控制器。
  2. 使用两个按钮作为navC的根视图控制器创建视图控制器
  3. 在两个按钮的IBAction中存储了按下哪个按钮,以便您知道哪些按钮的标题必须更改。
  4. 加载表视图控制器时,将视图控制器设置为自定义委托。
  5. 在语言列表表视图中,控制器didSelectRowWithIndexPath使用委托传递选定的单元格信息并弹出视图控制器。
  6. 在视图控制器的委托方法中,将您在步骤3中存储的按钮标题更改为所选单元格的文本。
  7. 我有另一个我在这里上传的解决方案。除了具有两个按钮的ViewController之外,它不包含任何自定义视图控制器。它利用了segues和unwind segues。

    http://www.filedropper.com/twobuttonnavc