如果使用标识符“segueHappened”执行segue运行此函数,否则运行此函数?这可能吗?

时间:2014-12-21 08:43:46

标签: ios function if-statement swift segue

        if NSUserDefaults.standardUserDefaults().objectForKey("segueHappened")! as Bool == true {
        selectedFromFavouritesQuote()
    } else {
        showFunFact()
    }

如果执行了segue,如何让我的selectedFromFavouritesQuote()运行的任何想法都运行我的showFunFact()函数。

所以......如果发生某个segue,请说出segue标识符" segueHappened"。运行此函数selectedFromFavouritesQuote()否则运行此函数showFunFact()。可以这样做吗?

只是说清楚:

如果从Viewcontroller A发生segue到viewcontroller B,则在viewcontroller B中运行selectedFromFavouritesQuote()函数

如果从Viewcontroller A到viewcontroller B没有发生segue,那么在viewcontroller B中运行showFunFact()函数

3 个答案:

答案 0 :(得分:1)

在视图控制器A中 -

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if (segue.identifier == "segueToVCBId") {

       let vcb = segue.destinationViewController as ViewControllerB
       vcb.fromVCA=true
    }
}

在VCB中 -

var fromVCA=false

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    if (self.fromVCA) {
        self.selectedFromFavouritesQuote()
    }
    else {
        self.showFunFact()
    }
}

}

答案 1 :(得分:0)

我不确定你的函数是做什么的,如果它们工作与否,但是为了保存一个bool到NSUserDefaults,你应该将它保存为布尔值并将其检索为布尔值,如下所示:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setBool(false, forKey: "segueHappened")

if defaults.boolForKey("someBool") {
    println("true")
} else {
    println("false")
    // Perform segue and set segue happened so next time it will evaluate as true
    defaults.setBool(true, forKey: "segueHappened")
}

答案 2 :(得分:0)

        var segueHappened: Bool = (NSUserDefaults.standardUserDefaults().boolForKey("segueHappened"))

        if segueHappened == true {
                self.selectedFromFavouritesQuote()
            } else {
                self.showFunFact()
            }

        NSUserDefaults.standardUserDefaults().setBool(false, forKey: "segueHappened") // we are saving a variable called myName and we are giving it the value of "Bob"
        NSUserDefaults.standardUserDefaults().synchronize() 

谢谢@Bluehound这是我最终得到的,它的确有效!