UITableViewController - вызвать тот же инициализированный класс в didSelectRowAtIndexPath - PullRequest
0 голосов
/ 04 октября 2010

в принципе, я застрял, ха.У меня есть страница, где видео загружается.В нем есть панель UIProgressView.

Когда пользователь выбирает строку в табличном представлении, он вызывает VideoPage *page = [[VideoPage alloc] initWithVideoId:[indexPath row]], а затем помещает этот контроллер представления в стек представления.Затем эта страница начинает загрузку и, в свою очередь, отображает ход выполнения.

Теперь, если пользователь нажимает кнопку на навигационном контроллере и возвращается к списку видео, а затем снова выбирает ЖЕ строку, он запускаетновая версия этой страницы, означающая, что инициализация страницы, которая постоянно обновляет UIProgressView, потеряна навсегда.

Есть ли способ обойти это?Извините, если вопрос расплывчатый.По сути, если у меня уже есть initd контроллер представления с videoId = 3, я не хочу инициировать другой, просто хочу снова нажать текущий, чтобы UIProgressView все еще отображал.

Спасибо за любую помощь, которую вы можете оказать мне.:)

Ответы [ 2 ]

1 голос
/ 04 октября 2010

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

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

0 голосов
/ 04 октября 2010

Проверьте, равен ли ваш viewController (тот, который нажат), нулю или нет, прежде чем вставлять новый.

if (viewController == nil) LoginViewController *viewController = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil];

[self.navigationController pushViewController:viewController animated:YES];        [viewController release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...