我已经搜索了这个问题很长一段时间了,我找不到解决问题的答案。如果有任何类似的问题我错过了并且有可行的解决方案,请发布链接给他们。
无论如何......
我有一个充满按钮的菜单,点击后会打开一个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类并加载链接即可。
关于为什么网页仅在第二次尝试后加载的任何想法?
答案 0 :(得分:0)
第一次调用loadURL时,您的WebviewViewController
可能尚未加载。如果视图控制器未加载它的子视图,因此它的嵌入式UIWebView
不可用。当您按下控制器时,它会被加载,第二次loadURL将起作用。