Ios 使用数据快速切换到上一个VC

Ios 使用数据快速切换到上一个VC,ios,iphone,xcode,swift,Ios,Iphone,Xcode,Swift,我想表演两段不同的音乐 我有一个VC,它是由输入的“当前模式”。从该VC中,我有另一个序列(推送)指向TableView VC 问题1 我想能够从表视图返回到以前的VC,一旦你触摸一行。所以我这里的问题是,我不知道使用哪种类型的segue,以便返回一步,同时发送数据 我有一个关闭按钮设置为“放松到VC”,但这只是关闭我的VC 问题2 从TableView中,我有另一个序列(推送)指向另一个TableView VC。-选择类别,然后选择子类别。 我这里的问题是,我不知道如何返回一个步骤,或者如何切

我想表演两段不同的音乐

我有一个VC,它是由输入的“当前模式”。从该VC中,我有另一个序列(推送)指向TableView VC

问题1

我想能够从表视图返回到以前的VC,一旦你触摸一行。所以我这里的问题是,我不知道使用哪种类型的segue,以便返回一步,同时发送数据

我有一个关闭按钮设置为“放松到VC”,但这只是关闭我的VC

问题2

从TableView中,我有另一个序列(推送)指向另一个TableView VC。-选择类别,然后选择子类别。 我这里的问题是,我不知道如何返回一个步骤,或者如何切换到从两个表视图控制器发送信息的VC1

谢谢问题1:

在YourTableViewController类的顶部(不是在类内部,而是在顶部,意思是在外部)实现以下协议:

protocol MyTableViewControllerDelegate {
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack)
}
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack) {

// Here you take the "item" parameter and use it for your purpose. It is the item you wanted to pass back here

}
然后执行以下操作:在表视图控制器类(TableViewController)中实现以下操作:

弱变量委托:MyTableViewControllerDelegate\实现委托的样式

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

let itemYouWantToPassBackToVC: SomeItemYouWantToPassBack = dataImplementedInTableView[indexPath.row]
delegate?.tableViewController(self, didFinishPickingItem item: itemYouWantToPassBackToVC)

dismissViewControllerAnimated(true, completion: nil)


tableView.deselectRowAtIndexPath(indexPath, animated: true)


}
然后在以前的VC中实现在协议中创建的函数:

protocol MyTableViewControllerDelegate {
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack)
}
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack) {

// Here you take the "item" parameter and use it for your purpose. It is the item you wanted to pass back here

}
此外,请阅读apple文档,以了解有关协议和代理的更多信息

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

let itemYouWantToPassBackToVC: SomeItemYouWantToPassBack = dataImplementedInTableView[indexPath.row]
delegate?.tableViewController(self, didFinishPickingItem item: itemYouWantToPassBackToVC)

dismissViewControllerAnimated(true, completion: nil)


tableView.deselectRowAtIndexPath(indexPath, animated: true)


}
问题2:

好的。。。在这种情况下,我建议如下:在VC1中实现以下功能:

@IBAction func unwindToVC1() {
\\you can leave this place empty 
}
然后,请注意以下文字:在故事板中,查找TableView 2的视图控制器(显示所有子类别的视图控制器),在它上面,您将看到三个按钮。按住CTRL键并从黄色拖动到红色出口门,然后从弹出窗口中选择“unwindToVC1”

在文档大纲(显示故事板中所有内容的列表视图)中,找到新创建的segue并为其命名,我们称之为“segueVC1”

然后在TableViewControllerNumber 2中执行以下操作:

override func tableView(tableView: UITableView, didSelectItemAtIndexpath indexPath: NSIndexPath) {

    let item1 = yourDataModel[indexPath.row]
    performSegueWithIdentifier("segueVC1", sender: item1)

}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

   if let segue.identifier == "segueVC1" {
   let vc = segue.destinationViewController as VC1 \\ VC1 is the first vc you want to segue to
   vc.modelToReceive = sender as modelToReceiveClass

 }
}
问题1:

在YourTableViewController类的顶部(不是在类内部,而是在顶部,意思是在外部)实现以下协议:

protocol MyTableViewControllerDelegate {
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack)
}
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack) {

// Here you take the "item" parameter and use it for your purpose. It is the item you wanted to pass back here

}
然后执行以下操作:在表视图控制器类(TableViewController)中实现以下操作:

弱变量委托:MyTableViewControllerDelegate\实现委托的样式

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

let itemYouWantToPassBackToVC: SomeItemYouWantToPassBack = dataImplementedInTableView[indexPath.row]
delegate?.tableViewController(self, didFinishPickingItem item: itemYouWantToPassBackToVC)

dismissViewControllerAnimated(true, completion: nil)


tableView.deselectRowAtIndexPath(indexPath, animated: true)


}
然后在以前的VC中实现在协议中创建的函数:

protocol MyTableViewControllerDelegate {
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack)
}
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack) {

// Here you take the "item" parameter and use it for your purpose. It is the item you wanted to pass back here

}
此外,请阅读apple文档,以了解有关协议和代理的更多信息

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

let itemYouWantToPassBackToVC: SomeItemYouWantToPassBack = dataImplementedInTableView[indexPath.row]
delegate?.tableViewController(self, didFinishPickingItem item: itemYouWantToPassBackToVC)

dismissViewControllerAnimated(true, completion: nil)


tableView.deselectRowAtIndexPath(indexPath, animated: true)


}
问题2:

好的。。。在这种情况下,我建议如下:在VC1中实现以下功能:

@IBAction func unwindToVC1() {
\\you can leave this place empty 
}
然后,请注意以下文字:在故事板中,查找TableView 2的视图控制器(显示所有子类别的视图控制器),在它上面,您将看到三个按钮。按住CTRL键并从黄色拖动到红色出口门,然后从弹出窗口中选择“unwindToVC1”

在文档大纲(显示故事板中所有内容的列表视图)中,找到新创建的segue并为其命名,我们称之为“segueVC1”

然后在TableViewControllerNumber 2中执行以下操作:

override func tableView(tableView: UITableView, didSelectItemAtIndexpath indexPath: NSIndexPath) {

    let item1 = yourDataModel[indexPath.row]
    performSegueWithIdentifier("segueVC1", sender: item1)

}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

   if let segue.identifier == "segueVC1" {
   let vc = segue.destinationViewController as VC1 \\ VC1 is the first vc you want to segue to
   vc.modelToReceive = sender as modelToReceiveClass

 }
}

看看这篇文章,它可能会有帮助:看看这篇文章,它可能会有帮助:非常感谢!做得很好!非常感谢你!做得很好!