2016-04-01 26 views
5

Hiện tại, tôi đang sử dụng nút trên uiwebview của tôi để quay lại từng trang web mà người dùng tìm kiếm và hoạt động của nó tuyệt vời. Nhưng có anyway để sử dụng thanh điều hướng trở lại nút để quay trở lại thông qua các trang web trước đó và khi theres không có nhiều trang để quay trở lại sau đó mở bộ điều khiển xem trước đó?Swift - UIWebview nút quay lại với nút BackBar NavigationBar

Heres mã im sử dụng để quay trở lại chỉ được kết nối với UIButton.

// Back button events 
func onBackButton_Clicked(sender: UIButton) 
{ 
    if(webview.canGoBack) 
    { 
     webview.goBack() 
    } 
} 

Mọi trợ giúp sẽ tuyệt vời.

Trả lời

11

Thêm vào mã của bạn, bạn có thể thêm một mã khác sẽ chạy khi không còn lịch sử web và bật trình điều khiển chế độ xem, sẽ quay lại trình điều khiển chế độ xem trước (nếu bạn có bộ điều khiển xem trong bộ điều khiển điều hướng) :

if(webview.canGoBack) { 
    //Go back in webview history 
    webview.goBack() 
} else { 
    //Pop view controller to preview view controller 
    self.navigationController?.popViewControllerAnimated(true) 
} 

Ngoài ra, nếu bạn muốn loại bỏ các mặc định trở lại nút và sử dụng nút tùy chỉnh của bạn thêm mã này trong viewDidLoad:

self.navigationItem.backBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.Plain, target: self, action: "onBackButton_Clicked:") 

và thay đổi phương thức của bạn trên từ:

onBackButton_Clicked(sender: UIButton) 

tới:

onBackButton_Clicked(sender: UIBarButtonItem) 
+0

Điều đó đã giúp nhưng tôi đã phải thay đổi nó cho 'self.navigationController .popViewControllerAnimated (true)' – ADuggan

+0

cập nhật câu trả lời;) Hy vọng rằng giúp –

+0

'' backBarButtonItem'' có thể không thích hợp ở đây. Thay vào đó, hãy sử dụng '' leftBarButtonItem'' tùy chỉnh như được đề cập bởi Maxime Vantillard bên dưới. Nút quay lại trong iOS thực sự được xác định cho bộ điều khiển ngay bên dưới bộ điều khiển trên cùng. – RajV

4

tôi sẽ đề nghị để quá tải chức năng nút quay lại và kiểm tra lịch sử.

override func viewDidLoad { 
     super.viewDidLoad() 
     self.navigationItem.hidesBackButton = true 
     let newBackButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Bordered, target: self, action: "back:") 
     self.navigationItem.leftBarButtonItem = newBackButton; 
    } 

    func back(sender: UIBarButtonItem) { 
     if(webview.canGoBack) { 
      webview.goBack() 
     } else { 
      self.navigationController.popViewController(animated:true) 
     } 
    } 
0

Bạn cần phải sử dụng BackBarButton để 1. điều hướng trở lại thông qua các trang web trước đó của bạn 2. di chuyển trở lại bộ điều khiển trước đó từ đầu tiên trang web tải. Yêu cầu thứ hai dường như được thỏa mãn với BackButton trên NavigationBar tại thời điểm này. Những gì bạn phải làm là thêm một tùy chỉnh BackButton. ?

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    leftButton = UIButton(type: UIButtonType.Custom) 
    leftButton.frame = CGRectMake(0, 0, 36, 36) 
    leftButton.clipsToBounds = true 
    leftButton.setImage(UIImage(named: "yourBackButton.png"), forState: .Normal) // add custom image 
    leftButton.addTarget(self, action: "onBackButton_Clicked:", forControlEvents: UIControlEvents.TouchUpInside) 
    let leftBarButton = UIBarButtonItem() 
    leftBarButton.customView = leftButton 
    self.navigationItem.leftBarButtonItem = leftBarButton 
} 

func onBackButton_Clicked(sender: UIButton) 
{ 
    if(webview.canGoBack) { 
     webview.goBack() 
    } 
    else { 
     self.navigationController.popViewController(animated: true) 
    } 
} 
Các vấn đề liên quan