繁体   English   中英

同时弹出并推送到同一视图后未调用viewDidLoad()方法

[英]viewDidLoad() method not called after simultaneous pop and push to same view

我在一开始就将此代码用于导航视图控制器

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];

之后,我正在使用这种简单的方法来推送到下一个视图

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

并使用它从视图中弹出

[self.navigationController popViewControllerAnimated:YES];

但是当我弹出并再次推送到具有不同属性值的同一视图时,viewdidload方法未运行

它仅在我只是进入其他任何视图然后再推送到该视图时运行

我无法理解这种异常行为。 就像我每次推送到任何视图时一样,都应执行此viewdidload .....

例如,我这样做是为了进入视图->

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

->然后我通过使用此后退按钮弹出

[self.navigationController popViewControllerAnimated:YES];

->然后我推到具有不同属性的相同视图

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

这次viewdidload没有运行。

这是因为您持有指向SLvc控制器的强大指针。 弹出时,将保留视图控制器。 每次按下时初始化一个新的控制器将解决您的问题。

//下面的方法从视图中弹出时调用

- (void)viewWillAppear:(BOOL)animated
{

    [super viewWillAppear:animated];
}

您可以在视图控制器中尝试以下方法:

-(void) viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    // your code here
}

要么

-(void)awakeFromNib
{
   [super awakeFromNib];
   // your code here
}

viewDidLoad() -在将视图加载到内存中时在init(coder:)之后调用。

viewWillAppear相似,此方法在视图从屏幕消失之前被调用。 viewWillAppear一样,可以在视图控制器对象的生存期内多次调用此方法。 当用户离开屏幕导航时调用它-可能是关闭屏幕,选择另一个选项卡,点击显示模式视图的按钮或在导航层次结构中进一步导航

当ViewController第一次加载到内存中时, viewDidLoad被调用一次。 在这里您要实例化任何实例变量并构建在此ViewController整个生命周期中都有效的视图。 但是,此刻该视图通常不可见。

但是,每次出现视图时都会调用viewWillAppear

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM