kmi*_*las 9 xcode flags global viewdidload swift
我正在尝试设置一个全局变量.在我的例子中,只是一个布尔标志,指示是否第一次呈现视图:
var initialLoadFlag: Bool = true
Run Code Online (Sandbox Code Playgroud)
在显示视图后,我想将此标志设置为false:
var initialLoadFlag: Bool = false
Run Code Online (Sandbox Code Playgroud)
然后检查它:
if initialLoadFlag {
showWelcomeMessage()
}
Run Code Online (Sandbox Code Playgroud)
所以,我想创建initialLoadFlag一个全局变量.在哪里以及如何?我试过了:
viewDidLoad我的视图控制器区域application()我的AppDelegate.swift文件中的方法中AppDelegate课堂上没运气.我收到一条Use of unresolved identifier 'initialLoadFlag'错误消息
(注意:我意识到在这个问题中,我背叛了我对Swift如何处理范围的无知.请原谅我......我正处于截止日期,并且仍然对语言不熟悉.)
谢谢你的帮助.
Kee*_*nle 22
您可以使用静态字段定义结构:
struct MyViewState {
static var initialLoadFlag = false
}
Run Code Online (Sandbox Code Playgroud)
用法:
// Set
MyViewState.initialLoadFlag = true
// Get
let state = MyViewState.initialLoadFlag
println("My view state:\(state)")
Run Code Online (Sandbox Code Playgroud)
备注:
如果设计不良,通常需要单身和全球变形等黑客攻击.也许你可以存储你的州NSUserDefaults?或者将它存储在一些会话对象中,该会话对象可以在任何需要了解上下文的ViewController中注入.
您可以在主控制器中存储一个标志,并在执行到详细信息控制器的 segue 时将其设置为 true。例如
class MasterViewController: UIViewController {
var firstTimePresenting = true
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
if firstTimePresenting {
println("First time!")
firstTimePresenting = false
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39553 次 |
| 最近记录: |