iOS Webview中的自定义BackButton

时间:2018-07-11 06:47:38

标签: objective-c

我想在iOS网络视图(目标C)的每个页面上创建自定义后退按钮。谁能建议我如何实施。 提前致谢 我是iOS Web视图的新手,这就是为什么我直接发布我想要的代码:

#import "ViewController.h"

@interface ViewController () <UIWebViewDelegate>

@end

@implementation ViewController{

    __weak IBOutlet UIImageView *logoImage;

}

- (void)viewDidLoad     {
    [super viewDidLoad];

    self.webView.delegate = self;

    NSString *urlString = @"https://www.anything.com";
    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:requestObj];

    self.webView.hidden = YES;
    if ([_webView canGoBack]) {
        [_webView goBack];
    }}

- (void)webViewDidStartLoad:(UIWebView *)webView {

}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    self.webView.hidden = NO;
    logoImage.hidden = YES;
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {

    NSLog(@"%@", error);
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end  

我正在传递网站的URL,我想在应用程序的每一页上显示一个后退按钮,以便用户可以转到上一页。我还有一个问题,就是每当我最小化我的应用程序并从最近的应用程序中打开它时,它都会重新启动,而我希望它可以从同一屏幕上恢复。

1 个答案:

答案 0 :(得分:0)

对于UIWebView,请检查方法- (void)goBack;

对于WKWebView,请检查方法- (WKNavigation *)goBack;- (WKNavigation *)goBack:(id)sender;

更新

// init the back button
[btnBack addTarget:self action:@selector(backButtonTapped:) forControlEvents:UIControlEventTouchUpInside];

- (void)backButtonTapped:(id)sender
{
     [self.webview goBack];
}

假设您已在完整代码中设置了webview和“后退”按钮(在导航栏中或其他位置)。

  1. 当当前(选项卡)页面具有历史记录列表且当前页面URL不是第一个 时,浏览器可以返回。 / p>

  2. 确保您确实要在goBack中使用viewDidLoad,就像您在https://www.anything.com中所做的那样,它需要一些时间才能完成指定的目标页面(loadRequest)的加载。浏览器。

  3. webview的方法goBack是异步的,它将url请求推送到webview并立即返回。

  4. 将Webview的https://www.anything.com方法绑定到您的自定义后退按钮,就像上面的代码片段一样。

  5. 尝试单击初始页面(goBack)中的示例链接,一旦完成新页面的加载,就可以[self.webview canGoBack]满足backButtonTapped的要求。 / p>

  6. 如果需要,在方法logoImage的实现中设置一个断点。

  7. $user = DB::table('users')->where('email',$email)->first(); 或其他不相关的代码问题放在下一个问题中,这使您的问题更加清楚和有用。