ios - 同时弹出并推送到同一 View 后未调用 viewDidLoad() 方法

标签 ios objective-c

我在开始时将此代码用于导航 View Controller

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
splashViewController *rootVC = [[splashViewController alloc]initWithNibName:@"splashViewController" bundle:nil];
self.navigator = [[UINavigationController alloc] initWithRootViewController:rootVC];
self.window.rootViewController = self.navigator;
[self.window makeKeyAndVisible];

之后我使用这个简单的方法推送到下一个 View

ScoreboardListViewController *SLvc = [[ScoreboardListViewController alloc]initWithNibName:@"ScoreboardListViewController" bundle:nil];
[self.navigationController pushViewController:SLvc animated:YES];

并使用它从 View 中弹出

[self.navigationController popViewControllerAnimated:YES];

但是当我弹出并再次推送到具有不同属性值的相同 View 时,viewdidload 方法没有运行

它仅在我只是到任何其他 View 然后推送到该 View 时运行

我无法理解这种异常行为。每当我推送到任何 View 时,应该执行此 viewdidload.....

例如,我这样做是为了获得 View ->

SLvc.trigger = @"sold";
SLvc.lblHeader.text = value;
[self.navigationController pushViewController:SLvc animated:YES];

-> 然后我使用这个按后退按钮弹出

[self.navigationController popViewControllerAnimated:YES];

-> 然后我推送到具有不同属性的相同 View

 SLvc.trigger = @"earning";
SLvc.lblHeader.text = value;
[self.navigationController pushViewController:SLvc animated:YES]

这次 viewdidload 没有运行。

最佳答案

这是因为您持有指向 SLvc Controller 的强指针。当你弹出它时, View Controller 被保留。每次按下时初始化一个新 Controller 将解决您的问题。

关于ios - 同时弹出并推送到同一 View 后未调用 viewDidLoad() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32691312/

相关文章:

ios - 将嵌套在容器 View Controller 中的 UINavigationController 添加到 UITabBarController

ios - 隐藏 SecItemUpdate 上的 TouchId 弹出窗口

ios - 使用检索到 Swift 数据类型的 JSON 数据

ios - CG 光栅数据对于一张图像来说太大

objective-c - 查询 plist,它是一个字典数组

objective-c - 如何在 iPhone 上镜像视频?

ios - 适合 MKMapView 部分的注释

ios - 隐藏多个单元格heightForRowAtIndexPath静态tableview swift

ios - 如何访问iPod媒体库?

iphone - 使用编码 windows-1255 将 NSData 转换为 NSString