2013-06-11 3 views
0

Я пишу приложение iOS, которое предоставляет собственный интерфейс с вкладками в кучу WebViews, отображающий контент с моего сайта. Я хочу, чтобы повторно нажав ту же вкладку, чтобы обновить страницу, поэтому я реализовал (выбор слов я парень Java ...?) UITabBarDelegate в моем ViewController и есть это:Загрузите содержимое вкладки iOS только один раз

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
    AbstractPageController *otherController = (AbstractPageController *)[[self viewControllers] objectAtIndex:[[tabBar items] indexOfObject:item]]; 
    [otherController loadPage]; 
} 

который загружает страницу в соответствующий WebView.

И, конечно же, чтобы загрузить страницу в первую очередь (при запуске), у меня есть это в моей AbstractPageController

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self loadPage]; 
} 

Как вы можете себе представить, это приводит к странице загружается дважды, если выбрана новая вкладка. Как мне избежать этого? Прямо сейчас я думаю, что лучшая идея - удалить loadPage звонок от viewDidLoad, но это будет означать, что при запуске страница не загрузилась (правда?). И это кажется взломанным особым случаем. Что вы порекомендуете?

ответ

0

Я решил, что самый чистый способ был просто tabBardidSelectItem делать только любую работу, если же вкладка была повторно использована. Таким образом:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
    NSUInteger newIndex = [[tabBar items] indexOfObject:item]; 

    if (newIndex == [self selectedIndex]) 
     //etc 
} 

Отлично работает и не чувствует себя взломанным!

-1

Я считаю, что если вы вызовете метод -loadView, а не свой собственный метод экземпляра, представление останется загруженным при представлении, а дублирование загрузки не произойдет.

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html

+0

Из связанной документации 'loadView':« Вы никогда не должны вызывать этот метод напрямую » –

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