gpt4 book ai didi

ios - 我改变观点的方式有什么问题吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:15 24 4
gpt4 key购买 nike

我在任何给定时间只需要 1 个 View 。我的目标是 ios 6 并使用 arc。

我有一个 MasterViewController,我所有的 View 都继承自它,所以它们都有这个方法:

-(void) showNextView:(UIViewController*)newController
{
[self.navigationController pushViewController:newController animated:true];
[self.navigationController popToViewController:newController animated:false];
[self viewDidChange];
}

所以在 MasterViewController 的子类中我们可能有:

-(IBAction)gameButtonPressed:(id)sender
{
if(sender == self.btnEmotion)
{
[self showNextView:[[EmotionViewController alloc] initWithNibName:nil bundle:nil]];
}
}

Root View Controller 是一个导航栏。但基本上我做到了,所以只有 1 个 View 。

但是,当我测试主视图 Controller 的 dealloc 时,它从未被调用。我不确定这是泄漏还是我不明白。

我改变观点的方式有什么问题吗?

谢谢

最佳答案

[self.navigationController pushViewController:newController animated:true];
[self.navigationController popToViewController:newController animated:false];

这和你想的不一样。 newController 是 push 之后的顶 View Controller ,所以 pop 什么都不做。因此,您只是在 View Controller 之上堆积了 View Controller 。这就是为什么没有任何东西被释放的原因。

可以试试这个:

[self.navigationController pushViewController:newController animated:YES];
[self.navigationController setViewControllers:newController animated:NO];

但我还没有尝试过,我不清楚你想要完成什么,所以我不保证......

但是,综合考虑,我觉得这是对 View Controller 的误用。在我看来,这更像是 transition⁠From⁠View:to⁠View:⁠du⁠ra⁠ti⁠on:⁠opt⁠io⁠ns: completion: 的工作 - 即,只需替换一个 View 与另一个 View ,带有动画。

关于ios - 我改变观点的方式有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22105535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com