我正在使用 UINavigationController
在类之间导航。当我在第一个 View 上按下按钮将我发送到第二个 View 时,一切正常。但是当我不想从第二个 View 返回到第一个 View 时,viewDidLoad
方法没有被调用,我真的需要它发生。
根据 this post ,我应该以某种方式将我的 View 设置为 nil
但我不确定在哪里或如何做。这是我用来返回第一个 View 的代码:
NewSongController *nsContr = [[NewSongController alloc] initWithNibName:@"mNSController" bundle:nil];
[self.navigationController popViewControllerAnimated:YES];
[nsContr release];
最佳答案
您的代码不正确。
您不需要实例化您的第一个 Controller 来弹出它。它已经存在。
viewDidLoad 只会在您第一次加载 viewController 时运行(即,当您向它推送时)。当您推送到其他 Controller 时,它们会被放入堆栈(想象一叠卡片)。当您将另一张卡片插入堆叠时,其下方的卡片已经存在。
弹出时就像从堆栈中取出一张卡片。但是下面的卡已经在那里了,所以不需要再次加载。它所做的只是运行 viewWillAppear。
要弹回,您需要做的就是...
[self.navigationController popViewControllerAnimated:YES];
就是这样。
删除有关 NewSongController 的内容(如果这是您要返回的内容)。
然后在 NewSongController 函数 - (void)viewWillAppear:animated;
中放入您想要在返回时运行的代码。
希望对您有所帮助。
关于objective-c - 使用 popViewController Animated 时调用 viewDidLoad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12517173/