ano*_*mox 1 restart reload viewcontroller ios swift2
我在swift中编写和应用程序,它有一个视图控制器,我在其中更改了一些设置,例如:所有视图控制器标签和标题都将更改.但我的问题是,当我更改应用程序设置时,我将它们存储在核心数据中,当我从核心数据中获取时,我使用导航栏按钮返回到父视图控制器,我什么也得不到相同的数据!但设置视图控制器,当我再次访问它时,它加载正确的数据!如果我关闭应用程序并重新打开它,该应用程序将加载正确的数据!所以我的问题是如何以编程方式重新加载或重新启动第一个视图控制器或整个应用程序?
为了更好地理解我的问题,我的父视图控制器包含导航栏.
代码:
import UIKit
import AVKit
import AVFoundation
import CoreData
class playVideo: UIViewController {
//data source
var languageDB = [NSManagedObject]()
let managedContext = AppDelegate().managedObjectContext
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.hidesBackButton = true
change_language()
}
override func viewDidLayoutSubviews() {
self.view.setNeedsDisplay()
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
change_language()
}
func change_language(){
Insert("?????")//insert default language
fetch("Language")
let Language = languageDB[0]
let row_value : String = Language.valueForKey("lang") as! String
if(row_value == "?????"){
self.navigationItem.title = "??? ???? ?????? ?? ??? ???? ????"
self.navigationItem.backBarButtonItem?.title = "???? ????"
}else if(row_value == "English"){
self.navigationItem.title = "Live broadcast from razavi holy shrine"
self.navigationItem.backBarButtonItem?.title = "Main Page"
}else if(row_value == "???????"){
self.navigationItem.title = "???? ??? ?? ???? ????"
self.navigationItem.backBarButtonItem?.title = "???????????"
}
}
//Insert Function
func Insert(lang : String) {
let check_empty = entityIsEmpty("Language")
if(check_empty != true){
let saveLanguage = NSEntityDescription.insertNewObjectForEntityForName("Language", inManagedObjectContext: managedContext)
// add our data
saveLanguage.setValue(lang, forKey: "lang")
//2
do {
try managedContext.save()
//3
languageDB.append(saveLanguage)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}//end of check empty if
}
//fetch Functions
func fetch(entity: String){
let langfetch = NSFetchRequest(entityName: entity)
do{
let results = try managedContext.executeFetchRequest(langfetch)
languageDB = results as! [NSManagedObject]
}catch{
fatalError("bad things happend \(error)")
}
}
//check entity is empty Function
func entityIsEmpty(entity: String) -> Bool
{
let request = NSFetchRequest(entityName: entity)
do{
let results = try managedContext.executeFetchRequest(request)
languageDB = results as! [NSManagedObject]
}catch{
fatalError("Cant handel entity \(error)")
}
if languageDB.count != 0
{
return true
}
else
{
return false
}
}
func Refresh() {
// Do some reloading of data and update the table view's data source
// Fetch more objects from a web service, for example...
self.dismissViewControllerAnimated(true, completion: nil)
self.navigationController!.dismissViewControllerAnimated(true, completion: nil)
navigationController!.popViewControllerAnimated(true)
self.navigationItem.hidesBackButton = true
change_language()
}
}
Run Code Online (Sandbox Code Playgroud)
尝试更新您的应用视图控制器,或重新加载或重新启动应用
func reNew(){
//reload application data (renew root view )
UIApplication.sharedApplication().keyWindow?.rootViewController = storyboard!.instantiateViewControllerWithIdentifier("Root_View")
}
Run Code Online (Sandbox Code Playgroud)
Root_View是您希望它更新的视图控制器,您可以在身份检查器中为视图控制器设置标识符.
| 归档时间: |
|
| 查看次数: |
14367 次 |
| 最近记录: |