iOS函数与ti viewDidLoad()类似
我搜索一个与viewDidLoad()非常相似的函数(包含在iOS中或与外部库一起)。不同之处在于,搜索功能仅在应用程序首次启动时使用,即用户打开应用程序时使用。每次加载视图时都会使用ViewDidLoad()。但搜索的函数xy()仅在运行时首次加载视图时使用 这是正常版本 用户打开应用程序,视图1打开->视图1的ViewDidLoad()->用户打开 视图2….->用户返回视图1->视图1的ViewDidLoad() 我搜索这个 用户打开应用程序,视图1打开视图1和函数的->ViewDidLoad() xy()->用户打开视图2….->用户返回视图1-> 视图1的ViewDidLoad()(这次不是函数xy(),因为视图 已在此运行时中加载) 谢谢你的帮助 你试过了吗iOS函数与ti viewDidLoad()类似,ios,swift,Ios,Swift,我搜索一个与viewDidLoad()非常相似的函数(包含在iOS中或与外部库一起)。不同之处在于,搜索功能仅在应用程序首次启动时使用,即用户打开应用程序时使用。每次加载视图时都会使用ViewDidLoad()。但搜索的函数xy()仅在运行时首次加载视图时使用 这是正常版本 用户打开应用程序,视图1打开->视图1的ViewDidLoad()->用户打开 视图2….->用户返回视图1->视图1的ViewDidLoad() 我搜索这个 用户打开应用程序,视图1打开视图1和函数的->ViewDidLo
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
您可以将需要运行一次的代码放入obj-c的
dispatch\u once
块中,并使用static var
用于swift
Obj-c:
- (void)viewDidLoad
{
[super viewDidLoad];
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// code you place here will run once
});
}
Swift 3
static var didInit = false
override func viewDidLoad()
{
super.viewDidLoad()
if MyClass.didInit == false {
MyClass.didInit = true
// code you place here will run once
}
}
AppDelegate不适合您的情况?
viewDidLoad
视图[Controller]1在正常视图控制器层次结构中实际上不会被调用多次。这种行为是可靠的,尤其是对于不是窗口根视图控制器的所有视图控制器。您的问题无效,因为您的“正常版本”不正常。当用户在关闭视图2后返回视图1时,将不会调用视图1的viewDidLoad
。