如何在导航控制器中创建无限循环,如 iphone 中的 instagram 应用程序?
Posted
技术标签:
【中文标题】如何在导航控制器中创建无限循环,如 iphone 中的 instagram 应用程序?【英文标题】:how to create infinite looping in navigation controller like instagram application in iphone? 【发布时间】:2012-10-03 11:27:09 【问题描述】:我正在开发一个应用程序,它有许多子视图,例如instagram
和picyou
类社交网络应用程序的流程,流程是图像->详细图像->任何评论->用户名->关注->用户名->图像用户名->图像->详细图像->任何评论->用户名->关注->用户名->图像用户名->该死的这是无限的,永远不会停止.....
永远不会收到内存警告或因内存问题而崩溃...
我正在使用导航控制器,但经过一段时间的导航更改某些视图控制器后,它给了我这样的错误*** 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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过按下图像导航到另一个 UIView 控制器(之前在情节提要中创建)