Kiw*_*Tew 1 iphone xcode ios swift
我期待执行两个不同的segue.
我有一个由"当前模态"输入的VC .从那个VC我有另一个segue(Push)通向TableView VC.
问题1
我希望能够在触摸一行后从表格视图返回到之前的VC.所以我的问题是我不知道使用什么类型的segue来返回一步但同时发送数据.
我有一个关闭按钮设置为"放松到VC",但这只是关闭我的VC.
问题2
从TableView我有另一个segue(推送)通向另一个TableView VC. - 您选择类别,然后选择子类别.我的问题是,我不知道如何返回一步或如何对从两个表视图控制器发送信息的VC1进行segue .
谢谢
问题1:
在YourTableViewController类的顶部(不在类内部但在顶部意义外)实现以下协议:
protocol MyTableViewControllerDelegate {
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack)
}
Run Code Online (Sandbox Code Playgroud)
然后你执行以下操作:在你的表中查看控制器类(YourTableViewController)实现这些:
弱var委托: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)
}
Run Code Online (Sandbox Code Playgroud)
然后在之前的VC中实现您在协议中创建的功能:
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
}
Run Code Online (Sandbox Code Playgroud)
另外阅读Apple文档以了解有关协议和代理的更多信息.
问题2:
好的......在这种情况下,我建议如下:在VC1中实现以下功能:
@IBAction func unwindToVC1() {
\\you can leave this place empty
}
Run Code Online (Sandbox Code Playgroud)
然后,注意这些话:在你的storyBoard中找到TableView编号2的视图控制器(显示所有子类别的视图控制器),在它上面你会看到三个按钮.CTRL +从黄色拖动到红色出口门,然后从弹出窗口中选择"unwindToVC1".
在文档Outline(显示storyBoard中所有内容的列表视图)中找到新创建的segue并为其命名,让我们说"segueVC1".
然后在TableViewControllerNumberTwo中实现这个:
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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |