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()函数
答案 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这是我最终得到的,它的确有效!