gpt4 book ai didi

iphone - 一种简单、干净的方式来切换/交换 View ?

转载 作者:行者123 更新时间:2023-12-03 20:56:19 27 4
gpt4 key购买 nike

我看了很多资料,但还是很困惑!我想制作一个具有多个 View 的应用程序(只有标准 View ,没有表格 View 或其他任何内容),我可以在其中单击每个 View 上的按钮来访问其他 View 。

我已经看到了多种方法来做到这一点,但对我来说唯一有意义的方法是让应用程序委托(delegate)负责交换 View 。而且我什至不确定我的代码是否正确清理了它正在交换的 View 的内存!

是否有比使用委托(delegate)更干净或更简单的方法来在 View 之间切换(我不关心动画)?

我也见过presentModalViewController,但这看起来有点无组织。 (例如,如果您有多个 View 呈现模式,您如何轻松地告诉最新 View 关闭直到根目录的所有 View )。

还可以创建一个基于窗口的应用程序,并使用该窗口来添加 subview 和删除 super View ,但是如何将一个 View 替换为另一个 View ,而无需在委托(delegate)方法中创建额外的、繁琐的编码来检测哪个 View 已删除以及哪个新 View 应该添加 View 吗?至少我找不到 addViewToSuperview 方法。

所以请分享一下你们如何交换观点,以及可能给您的系统带来的好处。

说得很慢,因为我感觉交换观点的时候很慢!

感谢您的宝贵时间!

最佳答案

如果您了解 View 背后的概念,处理多个 View 就非常容易。例如,您的委托(delegate)可以链接到一个空的父 View 。然后,您只需创建 subview 并使用 addSubview 将它们添加到父 View 中。最后添加的 View 是将在前台显示的 View 。

现在您可以使用 bringSubviewToFront 方法将 View 置于前面。请记住,您的所有 View 都会保留在内存中,直到您使用 subview 的 removeFromSuperview 方法将它们从父 View 中删除。

交换 View 只是在添加下一个 View 之前删除 subview ,但随后您必须决定是要保留它们还是要释放它们,但随后您需要*重新创建(分配/初始化)稍后查看 View 。

顺便说一句,如果您的 View 不在正确的位置,那么您要么需要调整相对于父 View 的位置,要么在界面构建器中将它们设置正确,因为 iOS 不会因为您将它们添加为 subview 而重新定位它们。

例如,我使用该代码在显示广告或股票代码的 View 之间切换:

- (void) showAds:(BOOL)flag {
if( showAds != flag ) {
while([[self.bottomView subviews] count] > 0 ) {
[[[self.bottomView subviews] objectAtIndex:0] removeFromSuperview];
}
showAds = flag;
if( showAds ) {
[self.tickerViewController stop];
[self.bottomView addSubview:self.adViewController.view];
} else {
[self.bottomView addSubview:self.tickerViewController.view];
[self.tickerViewController start];
}
}}

第二行确保如果没有任何更改,我不会删除和添加。接下来的 3 行删除所有残留的 subview 。之后,添加“添加”或“股票代码” View 作为我当前的 subview (包括确保股票代码正确启动/停止)。

希望有帮助。

关于iphone - 一种简单、干净的方式来切换/交换 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4982287/

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