objective-c - iOS 开发如何实现 push 出来的 Controller 在 pop 回上一页面的时候不释放?
高洛峰
高洛峰 2017-04-18 09:18:36
0
9
358

发现 QQ ,微信等在 Push 进 好友动态、朋友圈 这些页面的时候,总能保留在上一次进入时候最后浏览到的位置。这是如何实现的呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(9)
PHPzhong

Tout ce dont vous avez besoin est une référence forte au viewController


@property (nonatomic, strong) FooViewController *viewController;

...

- (void)push {
    if (!_viewController) {
        _viewController = [[FooViewController alloc] init];
    }
    [self.navigationController pushViewController:_viewController animated:YES];
}

De cette façon, après l'éclatement, le viewController a toujours une référence forte pointant vers lui et ne sera pas effacé. La prochaine fois que vous pousserez, poussez toujours vers le viewController

刘奇

Cela devrait en fait être un cache

Ty80

Le plus simple est d'en faire un singleton. Il n'y a qu'une seule instance dans tout le cycle de vie de l'application. Créez-le une fois lors de l'initialisation et utilisez-le le reste du temps.

黄舟

Peut stocker les attributs de la page, tels que les décalages, etc.

大家讲道理

C'est limité dans le temps, n'est-ce pas ? Si vous appuyez à nouveau pour accéder à la page dans un court laps de temps, vous resterez sur l'interface contextuelle. Il vous suffit de juger du décalage horaire entre l'heure de sortie et l'heure de rentrée. Si le décalage horaire est inférieur au décalage horaire, l'interface apparaîtra. Si le décalage horaire est supérieur au décalage horaire, le. l'interface sera rafraîchie.

黄舟

Implémentez simplement vous-même les méthodes push et pop

Peter_Zhu

Écrivez le prochain vc en tant qu'attribut puis poussez-le

PHPzhong

Ne laissez pas la page être publiée

洪涛

Il n'y a qu'une seule chose comme Moments dans l'APP, je pense qu'il vaut mieux en faire un singleton. Après l'avoir regardé, lorsque le réseau est déconnecté, cela montre qu'il est en cours de chargement lorsque je le remonte et que j'y rentre, cela montre toujours qu'il est en cours de chargement. J'ai l'impression qu'il n'est pas libéré.
Et les données sont également mises en cache. Si vous vous déconnectez d'Internet, supprimez l'application et entrez à nouveau, les données actualisées auparavant dans le cercle d'amis peuvent être vues

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal