WebView を使用すると、WebView の最初の URL に戻るボタンを表示せず、2 番目の URL にのみ表示されるシンプルな「戻る」ボタン (ナビゲーション バーまたは上部ツールバーのいずれか) を設定できます。最初に戻る?
私がこれを誤解していない限り、ニュース アプリなどの多くのハイブリッド ネイティブ/Web アプリでは、記事の詳細ページへのハイパーリンクを示すテーブル (「xcode でプログラムされた」テーブルではなく HTML ページ) にニュース記事が表示されることがよくあります。 (ここでも、ネイティブ コードではなく HTML)これらの種類のアプリに表示されますか?
現在、私は説明されているように、画面上部のツールバーに「戻る」バーボタンアイテム(WebViewの「cangoback」としてのアウトレット)を備えたWebビューを持っていますが、「移動するページがない場合、ボタンは最初から表示されています」戻る -
私が簡単に得たものは次のとおりです。
Webview - 最初の URL、HTML テーブル - 「戻る」ボタンは表示されますが、アクティブではありません (もちろん)
Webview - 2 番目の URL、HTML 詳細ページ - 「戻る」ボタンが表示され、戻ることができます。
2 番目の URL にのみ表示する、または 1 番目の URL で非表示にする方法を教えてください。
よろしくランディ
編集(11月25日)
これが私のhです:
#import <UIKit/UIKit.h>
#import "FilmnoirNavController.h"
@interface FilmnoirViewController : UIViewController <UIWebViewDelegate> {
IBOutlet UIWebView *webView;
IBOutlet UIBarButtonItem *backButton;
}
@property (nonatomic, retain) UIWebView *webView;
@property (nonatomic, retain) UIBarButtonItem *backButton;
- (IBAction)backButtonClicked:(id)sender;
@end
ここに私のmがあります:
#import "FilmnoirViewController.h"
@implementation FilmnoirViewController
@synthesize webView;
@synthesize backButton;
- (IBAction)backButtonClicked:(id)sender {
[webView goBack];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
// Initialization code
}
return self;
}
/*
Implement loadView if you want to create a view hierarchy programmatically
- (void)loadView {
}
*/
/*
If you need to do additional setup after loading the view, override viewDidLoad. */
- (void)viewDidLoad {
NSString *urlAddress = @"http://www.filmsite.org/filmnoir.html";
//Create a URL object.
NSURL *url = [NSURL URLWithString:urlAddress];
//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
//Load the request in the UIWebView.
[webView loadRequest:requestObj];
}
- (void)webViewDidFinishLoad {
// Other stuff if necessary...
// Could use hidden instead of enabled if you don't even want
// the button to be visible
backButton.enabled = (webView.canGoBack);
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
// Release anything that's not essential, such as cached data
}
- (void)dealloc {
[webView release];
[super dealloc];
}
@end
私のIBレイアウト:
Filmnoir View Controller (Film noir)
> View
>>Web View
>>Tool Bar
>>>Bar Button Item (Back)
backButtonを非表示にするために、次のようなものを使用したと思いました:
- (void)webViewDidFinishLoad {
BOOL ableToGoBack = [webView canGoBack];
if (ableToGoBack == NO) {
[backButton setHidden:YES];
}
else {
[backButton setHidden:NO];
}
しかし、UIbarButton アイテムが setHidden に応答しない可能性があるという警告が表示されます。実際には応答しません。