【发布时间】:2016-05-16 18:34:35
【问题描述】:
我是 swift 新手,我现在的问题是我想在单击导航按钮后将值从 RoutePreviewController 页面传回以显示在 ViewController 页面上。如下图,你可以看到 RoutePreviewController 不是直接从 ViewController 中分离出来的。
This is my story board of the swift project on xcode
但是,我尝试在代码中使用协议和委托。
这是我添加到 ViewController (MainPage) 中的代码
protocol HandleSelectedPath{
func selectedPathDraw(selectedRoute:[(line:Int?,node:Int,time:Double)])
}
在 ViewController 的 viewDidLoad 中
let routePreviewPage = storyboard!.instantiateViewControllerWithIdentifier("RoutePreviewController") as! RoutePreviewController
routePreviewPage.handleSelectedPathDelegate = self
以及 ViewController 类之外的扩展
extension ViewController : HandleSelectedPath{
func selectedPathDraw(selectedRoute:[(line:Int?,node:Int,time:Double)]){
print("7687980")
selectedPath = selectedRoute
routeDraw()
}
}
在 RoutePreviewController 中,我有协议的委托。
var handleSelectedPathDelegate: HandleSelectedPath? = nil
和导航按钮操作
@IBAction func navigateButtonAction(sender: AnyObject) {
handleSelectedPathDelegate?.selectedPathDraw(previewPath)
dismissViewControllerAnimated(true, completion: nil)
definesPresentationContext = true
}
因此,在单击 Navigate 按钮后,它确实将我送回 ViewController 页面,但未执行协议的 selectedPathDraw 功能。我也尝试打印一些随机字符串,但没有输出。
【问题讨论】: