UIWebView仅在第二次尝试后加载链接

时间:2014-12-11 20:02:05

标签: ios uiwebview

我已经搜索了这个问题很长一段时间了,我找不到解决问题的答案。如果有任何类似的问题我错过了并且有可行的解决方案,请发布链接给他们。

无论如何......

我有一个充满按钮的菜单,点击后会打开一个UIWebView,打开一个特定的网页。一切正常,但只有在第二次尝试之后。为了更清楚一点,我第一次点按一个按钮,网页就会卡住,但是当你关闭它并再次点击它之后,页面加载就好了。

由于我使用多个按钮,我决定将它们全部放在IBOutlet Collection中:

@property (nonatomic, retain) IBOutletCollection(UIButton) NSArray *btnArray;

然后我设置了一个数组,它可以容纳集合中的所有按钮,为我们的webview类设置一个视图控制器(我们有一个单独的webview类,过去没有给我带来任何问题)和webview的导航控制器,最后我用一个for循环来添加数组的所有按钮。

NSMutableArray *theButtons = [[NSMutableArray alloc] init];

webVC = [[WebviewViewController alloc] init];
webNav = [[UINavigationController alloc] initWithRootViewController:webVC];

for(int i = 0; i < [btnArray count]; i++)
{
    UIButton *btn = btnArray[i];
    btn.tag = i;
    [theButtons addObject:btn];
    [theButtons[i] addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
}

我还设置了一个数组,其中包含我需要访问的所有页面的结束链接,这些链接将附加到网址:

pages = @[@"exOne.php", @"exTwo.php", @"exThree.php", @"exFour.php", @"exFive.php", @"exSix.php"];

注意:-viewDidLoad

中的所有上述代码

这是处理单击按钮时发生的事情的方法:

-(void)buttonPressed : (id) sender
{
    UIButton *clicked = (UIButton *) sender;

    NSMutableString *url = [NSMutableString stringWithString:@"http://www.example.org/examples/"];


    for(int i = 0; i < [btnArray count]; i++)
    {
        if(i == clicked.tag)
        {
            [url appendString:pages[i]];
            [webVC loadURL:url];
            webNav.navigationBar.translucent = NO;
            webNav.navigationBar.topItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(backPressed)];
            [self.navigationController pushViewController:webVC animated:YES];
        }
    }
}

如果方法调用不清楚

[webVC loadURL:url];

只需将链接发送到我们的webviewViewController类并加载链接即可。

关于为什么网页仅在第二次尝试后加载的任何想法?

1 个答案:

答案 0 :(得分:0)

第一次调用loadURL时,您的WebviewViewController可能尚未加载。如果视图控制器未加载它的子视图,因此它的嵌入式UIWebView不可用。当您按下控制器时,它会被加载,第二次loadURL将起作用。