2012-10-03 1 views
3

Я разрабатываю приложение, которое будет иметь множество подзадач, таких как поток instagram и picyou вид приложений для социальных сетей поток - это изображение-> подробное изображение-> любой комментарий-> имя пользователя-> следующее-> имя пользователя-> образ имя пользователя- > image-> detail image-> any comment-> имя_пользователя-> следующее-> имя_пользователя-> образ имя_пользователя-> проклятье это бесконечно никогда не останавливается .....Как создать бесконечный цикл в контроллере навигации, например, приложение instagram в iphone?

и никогда не получает предупреждение о памяти или не сбрасывается памятью ...

Я использую навигацию контроллер, но еще через некоторое время навигации изменения некоторых viewcontrollers он дает мне ошибку, как этот *** 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; 
+0

прямо сейчас я объявляю это представление из xib (nib), и это не позволяет мне вызывать одно и то же представление несколько раз. это мой верный путь? Я думаю, что это не вызовет столько проблем с памятью? не так ли? и есть один и тот же вид, но все время он имеет разные образы. –

+0

Вы не вызываете представление несколько раз, потому что вы должны создавать экземпляр новой копии вида, расположенного в xib. Код выше для этого. – brynbodayle

+0

, но это не даст мне проблемы с памятью? Я столкнулся с этой проблемой прямо сейчас? –

Смежные вопросы