我在基於導航的應用程序的UIwebview中顯示了一些文本和圖像。它還包含一些鏈接,指向數據的來源,即網站。它以完美的方式展現出來。但是當用戶點擊後退按鈕時,它會彈出前一個視圖控制器並前往它。但是,當用戶點擊鏈接後,必須將後退按鈕轉換爲瀏覽器的後退按鈕,並按照其操作。如何將navigationcontroller的後退按鈕轉換爲iPhone中的瀏覽器後退按鈕?
任何建議/示例代碼或教程?
,你所要做的我在基於導航的應用程序的UIwebview中顯示了一些文本和圖像。它還包含一些鏈接,指向數據的來源,即網站。它以完美的方式展現出來。但是當用戶點擊後退按鈕時,它會彈出前一個視圖控制器並前往它。但是,當用戶點擊鏈接後,必須將後退按鈕轉換爲瀏覽器的後退按鈕,並按照其操作。如何將navigationcontroller的後退按鈕轉換爲iPhone中的瀏覽器後退按鈕?
任何建議/示例代碼或教程?
,你所要做的您可以更換帶有瀏覽器後退按鈕的導航欄的後退按鈕,只要UIWebView
可以通過執行如下操作來返回:
- (void)updateBackButton {
if ([self.webView canGoBack]) {
if (!self.navigationItem.leftBarButtonItem) {
[self.navigationItem setHidesBackButton:YES animated:YES];
UIBarButtonItem *backItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backWasClicked:)] autorelease];
[self.navigationItem setLeftBarButtonItem:backItem animated:YES];
}
}
else {
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
[self.navigationItem setHidesBackButton:NO animated:YES];
}
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
[self updateBackButton];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[self updateBackButton];
}
- (void)backWasClicked:(id)sender {
if ([self.webView canGoBack]) {
[self.webView goBack];
}
}
首先看到的是,你要隱藏的默認後退按鈕,下面
如下self.navigationItem.hidesBackButton = YES;
這一點,你必須添加自定義後退按鈕上的導航欄,如下之後:
的UIButton * m_BackBtn = [UIButton的buttonWithType:UIButtonTypeCustom]。
m_BackBtn.frame = CGRectMake(4.0,5.0 + 0.0,100,30);
[m_BackBtn setTitle:@「Back」forState:UIControlStateNormal];
[m_BackBtn addTarget:selfaction:@selector(BackButtonAction)forControlEvents:UIControlEventTouchUpInside];
[m_BackBtn retain];
[self.navigationController.navigationBar addSubview:m_BackBtn];
* 而在BackButtonAction功能*
- (無效)BackButtonAction
{
[yourwebView goBack];
//隨你需要你的東西
}
帶一個UIBarbuttonItem f在返回按鈕的地方ROM XIB你 可以寫在其IBAction爲方法如下假設你的UIWebView 對象是
UIWebView *web;
-(IBAction)goBack
{
[web goBack];
}
GoBack的是一個UIWebView
的內置方法
我喜歡上面的@ cduhn的方法,因爲它很簡單,但是它具有在Back按鈕上丟失「<」的缺點。如果你想保持「真正的」後退按鈕(與它的「<」圖標)看到這個答案,但改變按鈕的行爲:
https://stackoverflow.com/a/19132881/132542
對於Web視圖歷史情況下在這裏,這是代碼我用我的委託方法:
-(BOOL) navigationShouldPopOnBackButton {
if (webView.canGoBack) {
// Then just go back in the web view
[webView goBack];
// return NO to keep the current view controller loaded
return NO;
}
else {
// no web history, so pop the view
return YES;
}
}
這是一個有點棘手的解決方案,可能不會被建議。但這樣你可以在導航欄上保留後退導航動畫。
var urlRequest: NSURLRequest?
////////
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == .LinkClicked {
//AViewController creates and pushes itself to the navigationController
let pushViewController = self.storyboard?.instantiateViewControllerWithIdentifier("AViewController") as! AViewController
pushViewController.urlRequest = request
self.navigationController?.pushViewController(pushViewController, animated: true)
return false
} else { //is initial request from push
return true
}
}
我希望這會幫助你,如果這上面的代碼幫您務必請投我 – sumanthkodi
但是在我的設計,我需要把默認的後退按鈕導航控制器的 怎麼把我需要表現出以前的viewconrtoller名在後面的時候,它在視圖控制器中 –