グローバル変数を設定しようとしています。私の場合、ビューが初めて表示されているかどうかを示すブールフラグのみです。
_var initialLoadFlag: Bool = true
_
ビューが表示された後、このフラグをfalseに設定します。
_var initialLoadFlag: Bool = false
_
その後、それを確認します。
_if initialLoadFlag {
showWelcomeMessage()
}
_
そこで、initialLoadFlag
をグローバル変数として作成したいと思います。どこで、どうやって?私はもう試した:
viewDidLoad
エリアapplication()
メソッド内AppDelegate
クラス運が悪い。 _Use of unresolved identifier 'initialLoadFlag'
_エラーメッセージが表示される
(注:この質問では、スコープがSwiftでどのように処理されるかについての無知を裏切っていることに気づきました。ご容赦ください...私は締め切りにありますが、まだこの言語は初めてです。)
ご協力いただきありがとうございます。
フラグをマスターコントローラーに格納し、詳細コントローラーにセグエを実行するときにフラグを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
}
}
}
}
静的フィールドで構造体を定義できます:
struct MyViewState {
static var initialLoadFlag = false
}
使用法:
// Set
MyViewState.initialLoadFlag = true
// Get
let state = MyViewState.initialLoadFlag
println("My view state:\(state)")
備考:設計が悪い場合は、通常、シングルトンやグローバル変数などのハックが必要です。多分あなたはあなたの状態をNSUserDefaults
に保存できますか?または、コンテキストを認識する必要のある任意のViewControllerに挿入できるセッションオブジェクトに保存します。