swift - 在UITableView中选择单元格时如何更改按钮名称?
Posted
技术标签:
【中文标题】swift - 在UITableView中选择单元格时如何更改按钮名称?【英文标题】:How to change button name when cell selected in UITableView in swift? 【发布时间】:2016-03-05 10:56:53 【问题描述】:我有两个UIButton
,当你点击每一个时,你会进入表格视图控制器,在那里你可以选择一些东西。
我的问题是如何在选择任何单元格时更改按钮标题。 我想用所选单元格的名称替换按钮标题。
【问题讨论】:
您要将其标题更改为所选单元格名称的按钮在哪里? This 所以您想在单击单元格时返回根视图控制器? 是的,顺便改个按钮名 【参考方案1】:有两种方法可以将数据传回之前的 viewController。
1) 使用委托,检查this
2) 使用通知,检查this
【讨论】:
【参考方案2】:-
将单元格中的按钮绑定为
@IBOutlet
当单元格选择委托方法tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
。在这里您可以通过[tableView cellForRowAtIndexPath:indexPath]
获取您的手机
更改按钮的标题[cell.yourButton setTitle...]
【讨论】:
我使用 UITableView 的类,所以我不能添加这个【参考方案3】:如果您要将导航控制器放入根视图控制器,并将您希望从中访问按钮的视图控制器作为其顶部视图控制器,那么您可以在点击单元格时执行以下操作:
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)
【讨论】:
【参考方案4】:您可以使用单个 NavC,然后使用两个按钮作为根视图控制器来制作视图控制器,而不是使用两个导航控制器。然后,当按下按钮时,您会加载适当的表格视图控制器。此外,如果您的表视图控制器具有相同的数据源,那么您可以使用单个表视图控制器本身。
然后根据按下的按钮,您按下适当的表格视图控制器,但在prepareForSegue
中跟踪按下了哪个按钮,以便您可以在表格视图控制器中选择单元格时更改其标题。
要从表格视图控制器传递选定的单元格详细信息,您可以使用视图控制器可以实现的委托,表格视图控制器将调用并传递选定的单元格详细信息。
所以简而言之就是这样做。
-
将您的 navC 作为初始视图控制器。
使用两个按钮将您的视图控制器作为 navC 的根视图控制器
在两个按钮的 IBAction 中存储按下了哪个按钮,以便您知道必须更改哪些按钮的标题。
加载表视图控制器时,将视图控制器设置为自定义委托。
在语言列表表视图控制器的
didSelectRowWithIndexPath
中,使用委托传递选定的单元格信息并弹出视图控制器。
在视图控制器的委托方法中,将您在步骤 3 中存储的按钮标题更改为所选单元格的文本。
我在这里上传了另一个解决方案。除了具有两个按钮的 ViewController 之外,它不包含任何自定义视图控制器。它利用 segues 和 unwind segues。
http://www.filedropper.com/twobuttonnavc
【讨论】:
如果我只使用一个 ViewController,我可以做到这一点,但在我的情况下,我使用 UITableView 类,因此我无法将根视图控制器中的两个按钮的 IBAction 添加到 TableView 类,希望你能理解我以上是关于swift - 在UITableView中选择单元格时如何更改按钮名称?的主要内容,如果未能解决你的问题,请参考以下文章
swift - 在UITableView中选择单元格时如何更改按钮名称?
在 Swift 3 中基于 UITableView 中的单元格选择删除文件
UITableView 中的单元格在 iOS 中选择之前不会更新(swift)