Swift 将所选行标题传递回主表视图控制器

Swift 将所选行标题传递回主表视图控制器,swift,xcode7,Swift,Xcode7,我有一个带有静态单元格的主表视图控制器,静态单元格有一个标题,然后是一个细节标签。当用户单击“单元格1”时,它们将被带到第二个带有静态单元格的表视图控制器。他们从列表中进行选择(只能选择一个单元格),然后当他们点击后退按钮时,他们选择的任何单元格标题都会转移到他们单击的单元格的详细信息标签中。主视图控制器具有每个详图标签的出口。我已经处理它两天了,似乎无法让它工作将DismissDelegate类型的委托属性添加到第二个视图控制器,并将其设置为第一个控制器。 添加此协议 protocol Dis

我有一个带有静态单元格的主表视图控制器,静态单元格有一个标题,然后是一个细节标签。当用户单击“单元格1”时,它们将被带到第二个带有静态单元格的表视图控制器。他们从列表中进行选择(只能选择一个单元格),然后当他们点击后退按钮时,他们选择的任何单元格标题都会转移到他们单击的单元格的详细信息标签中。主视图控制器具有每个详图标签的出口。我已经处理它两天了,似乎无法让它工作

将DismissDelegate类型的委托属性添加到第二个视图控制器,并将其设置为第一个控制器。 添加此协议

protocol DismissDelegate {
     func selectedCell(index : int)
}
当第二个视图被取消时,例如在ViewWillopser方法中,调用selectedCell方法并将其传递给selectedCell

delegate.selectedCell(self.tableView.indexOfSelectedCell) //i don't know the correct function
然后在主视图中,控制器遵守协议,并对索引执行任何需要执行的操作

func selectedCell(index : int) {
    //whatever you need to do with the index
}

将DismissDelegate类型的委托属性添加到第二个视图控制器,并将其设置为第一个控制器。 添加此协议

protocol DismissDelegate {
     func selectedCell(index : int)
}
当第二个视图被取消时,例如在ViewWillopser方法中,调用selectedCell方法并将其传递给selectedCell

delegate.selectedCell(self.tableView.indexOfSelectedCell) //i don't know the correct function
然后在主视图中,控制器遵守协议,并对索引执行任何需要执行的操作

func selectedCell(index : int) {
    //whatever you need to do with the index
}

有几种方法可以解决这个问题

  • 使用委托

    您只需实现一个委托并从次视图控制器获取数据。 在次视图控制器中,可以这样调用委托

    self.delegate.dataInputed(xxx)

    将调用第一个视图控制器的DataInput方法。 在dataInputed方法中,您可以为选定的indexPath更新数据源的值,并重新加载数据

  • 发送通知

    您只需保留选定的表单元格indexath,在收到来自次要详细信息视图控制器的通知后,就可以为选定的indexath更新数据源的值,并重新加载表


  • 有几种方法可以解决这个问题

  • 使用委托

    您只需实现一个委托并从次视图控制器获取数据。 在次视图控制器中,可以这样调用委托

    self.delegate.dataInputed(xxx)

    将调用第一个视图控制器的DataInput方法。 在dataInputed方法中,您可以为选定的indexPath更新数据源的值,并重新加载数据

  • 发送通知

    您只需保留选定的表单元格indexath,在收到来自次要详细信息视图控制器的通知后,就可以为选定的indexath更新数据源的值,并重新加载表


  • 你的问题到底是什么?你试过什么?让我们看看一些示例代码。这是非常模糊的。func tableView(tableView:UITableView!didSelectRowAtIndexPath:nsindepath!){println(“您选择了单元格#(indepath.row)!”//Get cell Label let indexath=tableView.indexPathForSelectedRow();let currentCell=tableView.cellForRowAtIndexPath(indexath!)作为UITableViewCell!;让storyboard=UIStoryboard(名称:“YourStoryBoardFileName”,bundle:nil)var viewController=storyboard.instanceeviewControllerWithiIdentifier(“ViewControllerIdentifier”)作为另一个viewController viewController.passedValue=currentCell.textLabel.text我很抱歉刚刚开始学习Swift您的问题到底是什么?您尝试了什么?让我们看看一些示例代码。这是非常模糊的。func tableView(tableView:UITableView!,didSelectRowAtIndexPath:nsindepath!){println(“您选择了单元格#(indexath.row)!”//Get cell Label let indexath=tableView.indexPathForSelectedRow();let currentCell=tableView.cellForRowAtIndexPath(indexath!)作为UITableViewCell!;let storyboard=UIStoryboard(名称:“YourStoryBoardFileName”,bundle:nil)var viewController=storyboard.instanceeviewcontrollerwhiteIdentifier(“viewcontrollerIdentifier”)作为另一个viewController viewController.passedValue=currentCell.textLabel.text我很抱歉刚开始学习swiftI我忘了说我正在使用一个解绑segue alsohey Harri你能用一个例子解释一下吗,或者你也可以ping链接以供参考。谢谢。我忘了说我正在使用一个解绑segue alsohey Harri你能体验一下吗莱恩与一个例子,或者你也可以平的链接作为参考。谢谢。