2010-09-17 2 views
1

Я пытаюсь лучше понять UINavigationController. У меня 3 x x. Из .xib1 я нажимаю .xib2. Мне нужно передать данные на .xib2 из .xib1.iphone UINavigation Controller

Controller1 *selectcity = [[Controller1 alloc]initWithNibName:@"Controller1" bundle:nil]; 

selectcity.item1 = @"hi"; 
// Push the next view onto our stack 
[self.navigationController pushViewController:selectcity animated:YES]; 
[selectcity release]; 

Мне нужно передать некоторые данные на .xib2 каждый раз, когда открывается этот вид. Нажатие нового представления на стек каждый раз, когда пользователь выбирает строку в таблице, а затем нажимает назад, выбирает строку, назад, выбирает строку, назад создает очень быстро память и убивает приложение.

Если добавить мнение как свойство и проверить, если он уже существует,

if (xib2 == nil) { 

} 

метод viewDidLoad только вызывается в первый раз вид называется, так что я не могу передать свои данные в форму ,

Я не могу использовать viewDidAppear и т. Д., Потому что я не хочу, чтобы данные загружались при возврате из .xib3.

Каков правильный способ управления памятью в этой ситуации? Должен ли я выскакивать xib2 из стека каждый раз, когда они нажимают кнопку «Назад»? Так, какой метод я бы сделал?

Спасибо за помощь!

ответ

0

Я пытаюсь получить лучшее понимание UINavigationController. У меня есть 3 .xibs. Из .xib1 я нажимаю .xib2. Я должен передать данные .xib2 из .xib1.

Прежде всего, вы не передаете данные между .xibs, вы передаете данные между контроллерами представлений.

Мне нужно передать некоторые данные на .xib2 каждый раз, когда открывается этот вид. Нажатие нового представления в стек каждый раз, когда пользователя выбирает строку в таблице, , а затем нажать назад, выбирая строку, назад, выбор строки, спина создание memoryWarning очень быстро и убивая приложение ,

Пожалуйста, разместите больше кода, связанного с этой проблемой. Предполагая, что вы говорите о UITableView строках, ваше приложение не должно испытывать проблем с нажатием/отображением просмотров в стеке навигации в ответ на краны в строках.

метод viewDidLoad только получает называется первый раз, когда представление называется, так что я не могу передать свои данные в формы.

Опять же, вы хотите, чтобы передавать данные между видом контроллеры, а не просмотр. Вы можете сделать это довольно легко, создав свойства на своих контроллерах представлений, которые вы затем установите, прежде чем нажимать контроллер представления в стеке. Вы уже делаете это, я думаю, с вашим item1.

Что такое правильный способ управления памятью в этой ситуации?Должен ли я быть popping xib2 из стека каждый раз они нажимают кнопку «Назад»? Это так, Какой метод я мог бы сделать это?

Если вы используете стандартный UINavigationController для управления навигацией стеки, вам не нужно делать что-либо самостоятельно управлять памятью, когда пользователь нажимает кнопку; класс UINavigationController позаботится о выпуске самих контроллеров представлений.

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