在我想要的时候执行segues [英] Perform segues when I want

查看:99
本文介绍了在我想要的时候执行segues的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

晚上,我的VC中有2个show segues。但是我想只在我的pickerView有一个 row.count>时才会触发这些segues。 0

Evening, I have 2 show segues in my VC. But I want to fires these segues only when my pickerView has a row.count > 0.

这就是我所拥有的:

Override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

if segue.identifier == "searchImages" {

    if pickerView.numberOfRows(inComponent: 0) > 0  {

        let controller = (segue.destination) as! WebViewController
        //replacing " " with "+" for google search queries
        let type: WebViewController.SearchType = .image
        let queryString = String(nameLabel.text!.characters.map {
                    $0 == " " ? "+" : $0
        })
        controller.searchType = type
        controller.queryString = queryString
        print("2")
        }

        }
        if segue.identifier == "searchWiki" {

        if pickerView.numberOfRows(inComponent: 0) > 0  {
            let controller = (segue.destination) as! WebViewController
            //replacing " " with "+" for google search queries
            let type: WebViewController.SearchType = .wiki
            let queryString = String(nameLabel.text!.characters.map {
                    $0 == " " ? "+" : $0
            })
            controller.searchType = type
            controller.queryString = queryString
        }
    }
}

我知道我应该使用: ShouldperformSomething 。但我不知道热用它。
任何提示?

I know I should use: ShouldperformSomething. But I don't know hot use it. Any tips?

推荐答案

你应该实现 shouldPerformSegue 而不是检查 pickerView.numberOfRows(inComponent:0)> 0 prepareForSegue 方法中。

You should implement shouldPerformSegue instead of checking pickerView.numberOfRows(inComponent: 0) > 0 in your prepareForSegue method.

PS:Swift 3 Code(我假设这是你想要的。)

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
        return pickerView.numberOfRows(inComponent: 0) > 0
}

现在, prepareForSegue 方法应该类似于:

Now, prepareForSegue method should be similar to:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "searchImages" {
            let controller = (segue.destination) as! WebViewController
            //replacing " " with "+" for google search queries
            let type: WebViewController.SearchType = .image
            let queryString = String(nameLabel.text!.characters.map {
                $0 == " " ? "+" : $0
            })
            controller.searchType = type
            controller.queryString = queryString
            print("2")

        }

        if segue.identifier == "searchWiki" {
            let controller = (segue.destination) as! WebViewController
            //replacing " " with "+" for google search queries
            let type: WebViewController.SearchType = .wiki
            let queryString = String(nameLabel.text!.characters.map {
                $0 == " " ? "+" : $0
            })
            controller.searchType = type
        }
    }

希望这会有所帮助。

这篇关于在我想要的时候执行segues的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆