如何在导航控制器中创建无限循环,如 iphone 中的 instagram 应用程序?

Posted

技术标签:

【中文标题】如何在导航控制器中创建无限循环,如 iphone 中的 instagram 应用程序?【英文标题】:how to create infinite looping in navigation controller like instagram application in iphone? 【发布时间】:2012-10-03 11:27:09 【问题描述】:

我正在开发一个应用程序,它有许多子视图,例如instagrampicyou 类社交网络应用程序的流程,流程是图像->详细图像->任何评论->用户名->关注->用户名->图像用户名->图像->详细图像->任何评论->用户名->关注->用户名->图像用户名->该死的这是无限的,永远不会停止.....

永远不会收到内存警告或因内存问题而崩溃...

我正在使用导航控制器,但经过一段时间的导航更改某些视图控制器后,它给了我这样的错误*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported (<ViewController: 0x6d97110>)'

我想在按下后做同样的事情,你也会得到所有的数据。你知道该怎么做吗?

【问题讨论】:

【参考方案1】:

UINavigationController 自动支持您所描述的这种行为。内存高效且可能无限。 每次您想从应用程序的一个部分转到下一个应用程序时,只需使用与此类似的代码即可。

ViewController *vc = [[ViewController alloc] init];
//customize ViewController
[self.navigationController pushViewController:vc animated:YES];

因此,如果您想从照片转到照片详细视图,只需在按下按钮时按下照片详细视图控制器即可。即使您已经在照片细节视图控制器中,您也可以从该类中推送另一个。只要确保创建一个单独的实例。从你的错误来看,我认为这是你现在的问题。

我还发现最好为这些类型的视图控制器创建自定义初始化程序。对于照片详细信息视图,请使用类似的东西。

-(id)initWithPhoto:(Photo*)photo;

【讨论】:

现在我从 xib(nib) 声明这个视图,这不允许我多次调用同一个视图。这是我的正确方式吗?我认为这不会造成这么大的内存问题吗?不是吗?并且有相同的视图,但始终有不同的图像。 您不会多次调用视图,因为您应该实例化位于 xib 中的视图的新副本。上面的代码就是这样做的。 但这不会给我带来内存问题吗?我现在正面临这个问题? 错误与内存无关。 UINavigationController 处理您的内存,以保存导航堆栈中的所有视图控制器。 是的,我知道错误与内存无关,而是分配视图不会为该视图分配内存。

以上是关于如何在导航控制器中创建无限循环,如 iphone 中的 instagram 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITableView 中创建 2 列

如何在 iPhone 中创建类似照片应用程序的界面?

如何通过按下图像导航到另一个 UIView 控制器(之前在情节提要中创建)

在循环 iphone 中创建多个标签的内存管理

在 Python - 3.x 中创建可迭代的自定义对象后,有没有办法防止无限循环?

一个简单的 301 重定向会在我的 htaccess 中创建一个无限循环?