xcode 6 - swift - 通过 popover segue 传递一个字符串

xcode 6 - swift - passing a string through popover segue

我的项目有两个视图控制器。初始视图控制器具有三个按钮 (viewController1)。第二个视图控制器有一个 webview (viewController2)。我设置了一个从 viewController1 到 viewController2 的 popover segue。我希望每个按钮在发生 segue 时在 webview 中打开一个特定的网页(当我点击一个按钮时,webview 会向上滑动一个网站。如果我点击不同的按钮,webview 会向上滑动一个不同的预定网站。)

如何将预定的网站传递给viewController2?

到目前为止我的代码:

 // viewController1
 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
     if (segue.identifier == "webViewPopover") {
         let webviewVC:WebviewViewController = segue.destinationViewController as WebviewViewController
         webviewVC.receivedURL = "http://www.apple.com" //test string
        }
    }


// viewController2
var receivedURL:String!

    @IBOutlet var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let myURL = NSURL (string: receivedURL)
        let request = NSURLRequest(URL: myURL!)
        webView.loadRequest(request)
    }

就像你做的那样。

如果您要问,我怎样才能从不同的按钮派生出不同的字符串,最简单的方法是让不同的处理程序设置一个局部变量,然后像您所做的那样将其代理到下一个 VC .这是最直接的方法。

我使用过的一种更高级的技术(现在可能用得太多了)是在一个对象中包装一个闭包,将其作为发送者传递,并让不可知的 prepareForSegue 检查发送者并分派该方法。不过,为了您的需要,请使用 Apple 的 API - 您正在做的事情,只需向它提供一个缓存在按钮单击中的本地字符串变量。