仅加载iOS选项卡内容一次

时间:2013-06-11 15:42:28

标签: iphone ios uitabbarcontroller uitabbar

我正在编写一个iOS应用程序,它为显示我网站内容的一堆WebView提供了一个本机标签界面。我想重新点击相同的标签来刷新页面,所以我在我的ViewController中实现了(单词选择?我是一个Java人......)UITabBarDelegate并且有这个:

- (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调用,但这意味着在启动时页面没有加载(对吗?)。特殊情况似乎很糟糕。你推荐什么?

2 个答案:

答案 0 :(得分:0)

我认为最简单的方法就是让tabBardidSelectItem只在重新点击同一个标签时才做任何工作。因此:

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

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

效果很好,并且不会觉得自己很讨厌!

答案 1 :(得分:-1)

我相信如果您调用方法-loadView而不是您自己的实例方法,视图将在显示时保持加载状态,并且不会发生重复加载。

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