我正在编写一个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
调用,但这意味着在启动时页面没有加载(对吗?)。特殊情况似乎很糟糕。你推荐什么?
答案 0 :(得分:0)
我认为最简单的方法就是让tabBardidSelectItem
只在重新点击同一个标签时才做任何工作。因此:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
NSUInteger newIndex = [[tabBar items] indexOfObject:item];
if (newIndex == [self selectedIndex])
//etc
}
效果很好,并且不会觉得自己很讨厌!
答案 1 :(得分:-1)
我相信如果您调用方法-loadView而不是您自己的实例方法,视图将在显示时保持加载状态,并且不会发生重复加载。