我們經(jīng)常使用的QQ空間,當(dāng)我們短時(shí)間內(nèi)兩次進(jìn)入頁面的時(shí)候,頁面是沒有重新創(chuàng)建的,不光是緩存的數(shù)據(jù),是整個(gè)頁面都沒有變.我們在開發(fā)中可能也會(huì)有這樣的需求.
開始的時(shí)候,想的思路是這樣的:用定時(shí)器,將頁面掛起,不銷毀,再將其pop出來.
TaskShowViewController * taskVC;
NSArray * controllers = self.navigationController.viewControllers;
for (UIViewController * viewController in controllers) {
if ([viewController.title isEqualToString:@"任務(wù)"]) {
taskVC = (TaskShowViewController*)viewController;
}else{
taskVC =[[TaskShowViewController alloc]init];
}
}
[self.navigationController pushViewController:taskVC animated:YES];
但是發(fā)現(xiàn)只要pop的頁面就不會(huì)出現(xiàn)在數(shù)組中,是拿不到的.
于是通過別的方式實(shí)現(xiàn):
在push頁面保存這個(gè)將要彈出的頁面,然后在彈出的時(shí)候啟動(dòng)頁定時(shí)器,時(shí)間自己設(shè)定,就是在某一時(shí)間段后彈出的頁面會(huì)銷毀.
if (saveTaskVC ==nil) {
TaskShowViewController * worksVC =[[TaskShowViewController alloc]init];
saveTaskVC = worksVC;
NSTimer * tiemr =[NSTimer scheduledTimerWithTimeInterval:10 repeats:NO block:^(NSTimer * _Nonnull timer) {
saveTaskVC = nil;
timer = nil;
[timer invalidate];
}];
}
[self.navigationController pushViewController:saveTaskVC animated:YES];
saveTaskVC 便是保存的控制器,在設(shè)定好時(shí)間以后便將其銷毀,push出的頁面也會(huì)銷毀.