Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS函数与ti viewDidLoad()类似_Ios_Swift - Fatal编程技术网

iOS函数与ti viewDidLoad()类似

iOS函数与ti viewDidLoad()类似,ios,swift,Ios,Swift,我搜索一个与viewDidLoad()非常相似的函数(包含在iOS中或与外部库一起)。不同之处在于,搜索功能仅在应用程序首次启动时使用,即用户打开应用程序时使用。每次加载视图时都会使用ViewDidLoad()。但搜索的函数xy()仅在运行时首次加载视图时使用 这是正常版本 用户打开应用程序,视图1打开->视图1的ViewDidLoad()->用户打开 视图2….->用户返回视图1->视图1的ViewDidLoad() 我搜索这个 用户打开应用程序,视图1打开视图1和函数的->ViewDidLo

我搜索一个与viewDidLoad()非常相似的函数(包含在iOS中或与外部库一起)。不同之处在于,搜索功能仅在应用程序首次启动时使用,即用户打开应用程序时使用。每次加载视图时都会使用ViewDidLoad()。但搜索的函数xy()仅在运行时首次加载视图时使用

这是正常版本

用户打开应用程序,视图1打开->视图1的ViewDidLoad()->用户打开 视图2….->用户返回视图1->视图1的ViewDidLoad()

我搜索这个

用户打开应用程序,视图1打开视图1和函数的->ViewDidLoad() xy()->用户打开视图2….->用户返回视图1-> 视图1的ViewDidLoad()(这次不是函数xy(),因为视图 已在此运行时中加载)

谢谢你的帮助

你试过了吗

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