Objective c iOS webview中的自定义BackButton

Objective c iOS webview中的自定义BackButton,objective-c,Objective C,我想在iOS web view objective-C中的每个页面上创建自定义后退按钮。有人可以建议我如何实现吗。 提前谢谢 我不熟悉iOS Web view这就是为什么我直接发布我想要的内容这是我的代码: #import "ViewController.h" @interface ViewController () <UIWebViewDelegate> @end @implementation ViewController{ __weak IBOutlet UII

我想在iOS web view objective-C中的每个页面上创建自定义后退按钮。有人可以建议我如何实现吗。 提前谢谢 我不熟悉iOS Web view这就是为什么我直接发布我想要的内容这是我的代码:

#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,我想在我的应用程序的每个页面上显示一个后退按钮,以便用户可以转到上一页。我还有一个问题,每当我最小化我的应用程序并从最近的应用程序中打开它时,它就会重新启动,而我希望它从UIWebView的同一屏幕恢复,请检查方法-voidgoBack;出去

#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  
对于WKWebView,请选中方法-WKNavigation*goBack;和-WKNavigation*goBack:idsender;出去

#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  
更新

#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  
假设您已经在导航栏或完整代码中的其他地方设置了webview和back按钮

#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不是第一个也是最后一个时,浏览器可以返回

#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  
确保确实要在viewDidLoad中返回,完成加载指定的目标页面需要一些时间https://www.anything.com 就像在浏览器中一样

#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  
webview的loadRequest方法是异步的,它将url请求推送到webview并立即返回

#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  
像上面的代码片段一样,将webview的goBack方法绑定到自定义的后退按钮

#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  
尝试单击初始页面中的示例链接https://www.anything.com,一旦新页面完成加载,它就可以返回令人满意的[self.webview canGoBack]

#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  
如果需要,在BackButtonPapped方法的实现中创建断点

#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  
在下一个问题中删除logoImage或其他不相关的代码问题,这将使您的问题更加清晰和有用

#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  

感谢您发布您的答案,但请再次参考我的问题,因为我已对其进行了编辑以获取更多帮助。