2016-11-05 60 views
1

我搜索了一个与viewDidLoad()非常相似的函数(包含在iOS中或包含外部库)。区别应该是,搜索功能将仅在应用程序第一次启动时使用,这意味着当用户打开应用程序时。每次加载视图时都会使用ViewDidLoad()。但是搜索函数xy()只会在运行时第一次加载视图时使用。iOS功能类似ti viewDidLoad()

这是正常的版本

用户打开应用程序,浏览1打开 - > viewDidLoad中()的图1 - >用户打开 视图2 .... - >用户返回到搜索1 - > viewDidLoad中(查看)的1

我搜索这个

用户运ened App,View 1打开 - >视图1的ViewDidLoad()和函数 xy() - >用户打开视图2 .... - >用户返回视图1 - > 视图1的ViewDidLoad()不是函数xy(),因为视图 已在此运行时加载)

感谢您的帮助!

+0

的AppDelegate中是不适合你的情况? –

+1

视图[控制器]的'viewDidLoad'实际上在普通的视图控制器层次结构中实际上不会被多次调用。 – tktsubota

+0

此行为是可靠的,特别是对于不是窗口的根视图控制器的所有视图控制器。 – clemens

回答

1

您可以将代码,你需要在dispatch_once块一次运行OBJ-C和使用static var迅速

的OBJ-C:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     // code you place here will run once 
    }); 
} 

斯威夫特3

static var didInit = false 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    if MyClass.didInit == false { 
     MyClass.didInit = true 
     // code you place here will run once 
    } 
} 
2

你尝试

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool