Swift - Làm thế nào để ẩn nút quay lại trong mục điều hướng?


103

Ngay bây giờ tôi có hai bộ điều khiển chế độ xem. Vấn đề của tôi là tôi không biết cách ẩn nút quay lại sau khi chuyển sang bộ điều khiển chế độ xem thứ hai. Hầu hết các tài liệu tham khảo mà tôi tìm thấy đều nằm trong Objective-C. Làm cách nào để viết mã bằng Swift?

Ẩn mã nút quay lại trong Objective-C

[self.navigationItem setHidesBackButton:YES animated:YES];

Câu trả lời:


365

Theo tài liệu cho UINavigationItem:

self.navigationItem.setHidesBackButton(true, animated: true);

30
sự nhanh nhẹn là miễn phí.
Greg

58
Nó có thể cảm giác lo sợ bạn @ Paulw11, nhưng thực tế đơn giản là đánh máy "Swift nút ẩn trở lại" vào Google và đến đây - như tôi chỉ làm - là tấn nhanh hơn cày qua hàng tệp văn bản trong tài liệu chính thức.
Joseph Beuys 'Mum

4
Trong khi tên của nút quay lại được xác định trong bộ điều khiển chế độ xem đầu tiên, có thể thú vị khi nhận thấy rằng mã để ẩn nó phải được thực hiện trong bộ điều khiển chế độ xem thứ hai (mã hiển thị nút).
XLE_22

37

Trong trường hợp bạn đang sử dụng UITabBarController:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.navigationItem.hidesBackButton = true
}

Đối với tôi cũng vậy, tuy nhiên tôi muốn hiểu tại sao. Có ai biết sự khác biệt giữa câu trả lời được chấp nhận và cách tiếp cận này là gì không? Điều duy nhất tôi có thể nghĩ đến là mô hình kế thừa và phiên bản tĩnh của thanh điều hướng.
Helmut Granda

1
@HelmutGranda Nếu bạn nhận thấy rằng Bruno đang sử dụng Bộ điều khiển thanh tab, đó là sự khác biệt. Trong trường hợp câu trả lời được chấp nhận, VC có thể được nhúng trong bộ điều khiển điều hướng.
cloudcal

@cloudcal Tôi không sử dụng tabBar, nhưng cả hai câu trả lời đều hoạt động. Cả hai đều đã giấu nút quay lại. Tôi nghĩ rằng chúng sẽ hoạt động khác nếu viewController xuất hiện trên màn hình và sau đó tôi muốn ẩn nút quay lại. Tuy nhiên, một lần nữa cả hai đều hành động giống nhau. Tôi không thể tìm thấy bất kỳ sự khác biệt nào giữa chúng. Tôi đang nói câu trả lời của Bruno là không chính xác. Thay vì điều hướng thuần túy, nó không tạo ra sự khác biệt. Tôi chưa thử tabBarController
Honey

20

Nhanh

// remove left buttons (in case you added some)
 self.navigationItem.leftBarButtonItems = []
// hide the default back buttons
 self.navigationItem.hidesBackButton = true

Rõ ràng rằng navigationItem.hidesBackButton = true là câu trả lời đúng. Nếu có các nút bên trái, có thể là trường hợp, thì đây chắc chắn là câu trả lời đúng và nên được coi là câu trả lời đầy đủ hơn.
truedat101

self.navigationItem.hidesBackButton = trueNó hoạt động như mong đợi.
Shahabuddin Vansiwala,

9

Điều này cũng được tìm thấy trong tài liệu lớp UINavigationController:

navigationItem.hidesBackButton = true

6

Đặt nó trong viewDidLoadphương pháp

navigationItem.hidesBackButton = true 

2

Bạn có thể thử với mã dưới đây

override func viewDidAppear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}

0

Đây là một phiên bản của câu trả lời trong

Swift 5

mà bạn có thể sử dụng nó từ bảng phân cảnh:

// MARK: - Hiding Back Button

extension UINavigationItem {

    /// A Boolean value that determines whether the back button is hidden.
    ///
    /// When set to `true`, the back button is hidden when this navigation item
    /// is the top item. This is true regardless of the value in the
    /// `leftItemsSupplementBackButton` property. When set to `false`, the back button
    /// is shown if it is still present. (It can be replaced by values in either
    /// the `leftBarButtonItem` or `leftBarButtonItems` properties.) The default value is `false`.
    @IBInspectable var hideBackButton: Bool {
        get { hidesBackButton }
        set { hidesBackButton = newValue }
    }
}

Mọi mục điều hướng của bộ điều khiển chế độ xem sẽ có thuộc tính mới này trong phần trên cùng của trình kiểm tra thuộc tính


0

Điều đó làm việc với tôi trong Swift 5 như một sự quyến rũ, chỉ cần thêm nó vào viewDidLoad () của bạn

self.navigationItem.setHidesBackButton(true, animated: true)

-4

nhập mô tả hình ảnh ở đây

Đi tới trình kiểm tra thuộc tính và bỏ chọn hiển thị Thanh điều hướng để ẩn nút quay lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.