2017-06-06 45 views
1

當用戶第一次啓動應用程序時,我需要在桌面視圖上啓動教練標記/教程視圖。除非用戶刪除並重新安裝應用程序,否則教練標記將永不再顯示。當用戶第一次啓動應用程序時,顯示教練標記視圖Swift 3

我搜索了互聯網,但無法找到一個簡單的解決方案。哦,我對斯威夫特來說相當新穎,所以請溫柔。 :)

編輯: 這是我用過的。很棒!

override func viewDidAppear(_ animated: Bool) { 
     if !UserDefaults.standard.bool(forKey: "isSecondTime") { 
      let launchedBefore = UserDefaults.standard.bool(forKey: "isSecondTime") 
      if launchedBefore { 
       print("Not the first launch.") 
      } else { 
       let VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CoachMarksViewController") 
       self.present(VC, animated: true, completion: nil) 
       print("This the first launch.") 
       UserDefaults.standard.set(true, forKey: "isSecondTime") 
      } 

     } 
} 
+0

看看'UserDefaults'類。在那裏找一個表示你的特殊觀點的指標是相當正常的。如果找不到指示符,請顯示顯示並更新默認值,以便下次找到它。 –

回答

2

您應該使用「UserDefaults」來實現此目的。在你的「viewDidLoad」方法中,檢查一個值是否爲「isSecondTime == true」(你將從「UserDefaults」訪問這個值),然後在其他部分中不顯示任何內容顯示你的教程,並將值「isSecondTime = true」 UserDefaults」。它將根據您的要求工作。檢查驗證碼:

if(NSUserDefaults.standardUserDefaults().boolForKey("isSecondTime")) 
    { 
     // app already launched 
    } 
    else 
    { 
     // This is the first launch ever 
     // show your tutorial.....! 
     NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isSecondTime") 
     NSUserDefaults.standardUserDefaults().synchronize() 
    } 

對於斯威夫特3:

let launchedBefore = UserDefaults.standard.bool(forKey: "isSecondTime") 
if launchedBefore { 
print("Not first launch.") 
} else { 
// // show your tutorial.....! 
print("First launch, setting UserDefault.") 
UserDefaults.standard.set(true, forKey: "isSecondTime") 
} 
+0

請求是爲Swift ** 3 **? –

+0

是的,它適用於Swift 3 – Wes

1

因此,您需要一個布爾值來指示是否顯示教程標記/教程在整個應用程序終止和重新啓動時持續存在。第一次運行應用程序時,bool將指示必須顯示教練標記,然後應用程序將設置布爾值以表明它們不再需要。

要堅持bool,您可以使用UserDefaults來存儲布爾,並在應用程序啓動時讀取它。這裏是鏈接到它的蘋果documentation

p.s.向用戶提供一種再次顯示的方式可能是不錯的,因爲他們可能會忘記某些東西,或者只是不加思索就解僱他們。

+0

添加一種方式讓用戶再次顯示它們是一個好主意。我去做!謝謝:) – Wes

4

可能這就是你需要的嗎?

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated); 
    let kFirstLaunch = "First_launch" 

    if (UserDefaults.standard.object(forKey: kFirstLaunch) == nil) { 
     UserDefaults.standard.set(1, forKey: kFirstLaunch); 
     //Show your coach marks here 

    } 
} 
0

你應該使用這個小汽艇管理者:)

enum AppLaunchManager { 

    // MARK: - Private Attributes 
    private static let launchesCountKey = "LaunchesCount" 


    // MARK: Public Enum Methods 
    static func launchesCount() -> Int { 
     guard let launched = UserDefaults.standard.value(forKey: launchesCountKey) as? Int else { 
      return 0 
     } 
     return launched 
    } 

    static func registerLaunch() { 
     UserDefaults.standard.setValue(launchesCount() + 1, forKey: launchesCountKey) 
    } 

    static func isFirstLaunch() -> Bool { 
     return launchesCount() <= 1 
    } 
} 

而且在AppDelegate中:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { 
    AppLaunchManager.registerLaunch() 
    return true 
} 

然後,只要你需要使用:

if AppLaunchManager.isFirstLaunch() { 
    /* do whatever you need */ 
} 
相關問題