Cách đặt văn bản nút quay lại trong Swift


118

Làm cách nào để xóa văn bản nút quay lại.

current back button: <Back 
desired back button: <AnythingElse 

Không ai trong số những đã làm việc:

self.navigationItem.backBarButtonItem?.title = "Back" 
self.backItem?.title = "" 
self.navigationController?.navigationBar.backItem?.title = "" 
self.navigationItem.backBarButtonItem?.title = "" 
self.navigationController?.navigationItem.backBarButtonItem?.title="Back" 
self.navigationController?.navigationBar.backItem?.title = "" 
self.navigationController?.navigationItem.backBarButtonItem?.title 
394

Các nút quay lại thuộc về bộ điều khiển xem trước, không phải là một hiện trình bày trên màn hình.
Để sửa đổi các nút quay lại, bạn nên cập nhật nó trước đẩy, trên bộ điều khiển điểm cho rằng khởi xướng segue:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    let backItem = UIBarButtonItem() 
    backItem.title = "Something Else" 
    navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed 
} 

Swift 3:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let backItem = UIBarButtonItem() 
    backItem.title = "Back" 
    navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed 
} 
+5

Thanks a lot , bạn không biết bao nhiêu giờ tôi chi tiêu chỉ cho rằng chi tiết nhỏ (bộ điều khiển trước) 07 feb. 162016-02-07 16:29:56

+3

Nếu tôi có thể upvote một triệu lần tôi sẽ. Không thể cho bạn biết bao lâu tôi đã tự hỏi tại sao nó không hoạt động (trước đây là trên bộ điều khiển đích) 24 may. 162016-05-24 21:18:34

+6

"Nút quay lại thuộc về bộ điều khiển xem trước" đó là câu trả lời có giá trị nhất mà tôi đã tìm thấy về chủ đề này! Cảm ơn bạn! 01 dec. 162016-12-01 14:38:25

  0

Tôi nghĩ rằng nó là ok để thiết lập nó theo cách này. Nhưng tôi khuyên bạn nên, nếu có thể đặt 'tiêu đề' của' viewController' trước đó của bạn trong ngăn xếp điều hướng. Đó là cách tiếp cận tốt hơn nhiều. 10 apr. 172017-04-10 16:37:30

+1

Đặt 'tiêu đề' thay đổi * tiêu đề *, không chỉ là nút quay lại. 11 apr. 172017-04-11 00:39:28

+1

Tôi đã thêm self.navigationController !navigationBar.topItem! .backBarButtonItem = backItem thay vì navigationItem.backBarButtonItem = backItem và nó hoạt động tốt trên Swift 3. Cảm ơn bạn 06 may. 172017-05-06 10:35:50

  0

Cảm ơn rất nhiều, Đây là câu trả lời đúng. 15 jun. 172017-06-15 12:54:51

  0

Đây là quyền làm điều đó. Ngoài ra tôi muốn chỉ ra nếu bạn không sử dụng segue để bật ra các khung nhìn, nó vẫn hoạt động miễn là bạn thay đổi backBarButtonItem trước khi bật ra khung nhìn của bạn. 29 jun. 172017-06-29 03:18:25

+1

Thật thú vị, nếu bạn muốn tiêu đề không phải là thứ bạn phải đặt thành "", không phải "". "" một mình để lại rất nhiều không gian, xâm nhập vào chế độ xem tiêu đề. 12 aug. 172017-08-12 00:05:01

+1

Nó cũng hoạt động trong 'viewDidLoad'. 18 oct. 172017-10-18 16:24:32

  0

đây là giải pháp duy nhất có hiệu quả đối với tôi. cảm ơn rất nhiều 11 nov. 172017-11-11 22:43:02


7

này nên làm việc:

override func viewDidLoad() { 
    super.viewDidLoad() 

    var button = UIBarButtonItem(title: "YourTitle", style: UIBarButtonItemStyle.Bordered, target: self, action: "goBack") 
    self.navigationItem.backBarButtonItem = button 

} 

func goBack() 
{ 
    self.navigationController?.popViewControllerAnimated(true) 
} 
+8

không đúng cách để làm điều đó, bạn chỉ cần thay thế các nút quay lại 29 aug. 152015-08-29 09:14:40

  0

Tốt hơn để làm điều đó từ những người xây dựng giao diện 10 may. 162016-05-10 12:49:11


0

Đó là bởi vì bạn nên làm điều đó trong prepareForSegue của cha mẹ viewController của bạn:

này nên thực hiện thủ thuật:

// MARK: - Navigation 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    navigationItem.title = "AnythingYouWant :)" 
} 

Cheers

+4

này sẽ cập nhật danh hiệu trên bộ điều khiển xem và không chỉ là nút quay lại 29 aug. 152015-08-29 09:21:58


76

Bạn có thể làm điều đó từ giao diện người xây dựng như sau:

nhấp vào mục điều hướng của bộ điều khiển chế độ xem trước

enter image description here

từ trình kiểm tra thuộc tính đặt văn bản nút quay lại thành bất kỳ thứ gì bạn muốn. Thats it !!

enter image description here

+1

cách tốt nhất để chỉ định 'nil' là gì? 05 apr. 162016-04-05 00:13:47

  0

@kennydust Bạn có nghĩa là tiêu đề trống không? 05 apr. 162016-04-05 03:10:17

  0

có. có cách nào thông qua trình tạo giao diện không? 05 apr. 162016-04-05 23:00:05

+5

@kennydust có trong nút quay lại thêm không gian và nhấn enter 06 apr. 162016-04-06 12:11:49

  0

Đẹp và dễ dàng, nhưng nó có thể địa phương hóa không? 27 may. 162016-05-27 19:35:14

  0

@ ThePumpingLama khi bạn bản địa hóa các bảng phân cảnh, nó được bản địa hóa tự động 28 may. 162016-05-28 14:51:49

+1

@AjinkyaPatil Tôi đã thử cách này nhưng nút Quay lại không hiển thị. Bất kỳ lý do tại sao điều này có thể? 01 jun. 162016-06-01 22:11:31

  0

@ user805981 là văn bản nút quay lại hiển thị? 02 jun. 162016-06-02 06:57:51

  0

@AjinkyaPatil no no không phải là 03 jun. 162016-06-03 14:45:04

  0

@ user805981 bạn có đặt lại nút văn bản thành bộ điều khiển xem hoặc bộ điều khiển xem trước đó mà bạn đang đẩy bộ điều khiển xem không? 03 jun. 162016-06-03 14:54:19

  0

@AjinkyaPatil Vâng tôi có. Vẫn không làm việc. Bạn có một ví dụ github? Cảm ơn! 15 jun. 162016-06-15 21:59:51

+3

Điều này là sạch hơn nhiều sau đó là câu trả lời được chấp nhận IMO. 15 nov. 162016-11-15 01:19:31


24

Back-nút văn bản được lấy từ tiêu đề chuyển hướng mục mẹ view-controller của. Vì vậy, bất cứ điều gì bạn đặt trên tiêu đề mục điều hướng của bộ điều khiển xem trước, sẽ được hiển thị trên văn bản nút quay lại của bộ điều khiển xem hiện tại. Bạn chỉ có thể đặt "" làm tiêu đề mục điều hướng trong phương thức viewWillAppear của chế độ xem của trình điều khiển gốc.

self.navigationItem.title = "" 

Một cách khác là đặt

self.navigationController?.navigationBar.topItem?.title = "" 

trong phương pháp viewWillAppear hiện quan điểm điều khiển của. Điều này sẽ gây ra một số vấn đề khác nếu ngăn xếp điều hướng quá lồng nhau.

+1

self.navigationItem.title = "" phải ở trên cùng là câu trả lời hay nhất! 07 may. 162016-05-07 16:45:11

  0

Tôi đồng ý với điều này là câu trả lời hay nhất vì tất cả các câu trả lời đều yêu cầu thêm chức năng đích vào mục điều hướng, vì vậy chúng không chỉ thay đổi văn bản mà còn thêm chức năng pop tùy chỉnh. 17 jan. 172017-01-17 08:03:05


3

Trong phương pháp viewDidLoad của trình bày điều khiển add:

// hide navigation bar title in the next controller 
let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil) 
navigationItem.backBarButtonItem = backButton 

10

Các nút quay lại thuộc về bộ điều khiển giao diện trước đó, không phải là một hiện trình bày trên màn hình. Để sửa đổi các nút quay lại, bạn nên cập nhật nó trước khi đẩy, thêm viewDidLoad:

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

20

tôi không biết nơi bạn đã sử dụng phương pháp của bạn mà bạn đặt trên câu hỏi của bạn nhưng tôi có thể nhận được kết quả mong muốn nếu tôi sử dụng, trên lớp ViewController của tôi (trong đó tôi muốn thay đổi nút quay lại), trên viewDidLoad() chức năng, các dòng sau:

self.navigationController?.navigationBar.backItem?.title = "Anything Else" 

kết quả sẽ là:

Trước

enter image description here

Sau

enter image description here

+1

Trong trường hợp của tôi, nó chỉ hoạt động nếu bạn đặt đoạn mã này vào phương thức viewDidAppear và không phải là viewDidLoad 11 oct. 172017-10-11 13:32:29


0

Đặt self.title = "" trước self.navigationController?.pushViewController(vc, animated: true).


6
let backButton = UIBarButtonItem() 

backButton.title = "name" 

self.navigationController!.navigationBar.topItem!.backBarButtonItem = backButton 

1

Hãy thử điều này ... nó sẽ làm việc ....

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    self.title = "" 
} 

Đoạn mã trên sẽ ẩn các văn bản và chỉ hiển thị các mũi tên trở lại trên thanh điều hướng.

+1

Điều này chắc chắn hoạt động! +1 09 feb. 182018-02-09 06:05:12


0
override func viewWillAppear(_ animated: Bool) { 

    self.tabBarController?.navigationItem.title = "Notes" 

    let sendButton = UIBarButtonItem(title: "New", style: .plain, target: self, action: #selector(goToNoteEditorViewController)) 

    self.tabBarController?.navigationItem.rightBarButtonItem = sendButton 
} 

func goToNoteEditorViewController(){ 
    // action what you want 
} 

Hy vọng điều đó sẽ hữu ích !! #swift 3


12

Nếu bạn đang sử dụng tệp xib cho trình điều khiển chế độ xem thì hãy thực hiện việc này trong lớp trình điều khiển chế độ xem của bạn.

class AboutUsViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    edgesForExtendedLayout = [] 
    setUpNavBar() 
} 

func setUpNavBar(){ 
    //For title in navigation bar 
    self.navigationController?.view.backgroundColor = UIColor.white 
    self.navigationController?.view.tintColor = UIColor.orange 
    self.navigationItem.title = "About Us" 

    //For back button in navigation bar 
    let backButton = UIBarButtonItem() 
    backButton.title = "Back" 
    self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton 
} 

} 

Kết quả sẽ là:

enter image description here


0

Nếu bạn đang thúc đẩy một bộ điều khiển nhìn từ quan điểm trang điều khiển, bạn không thể cập nhật tiêu đề nút quay lại bộ điều khiển chuyển hướng của. Để giải quyết điều này, hãy tạo một đại biểu trở lại bộ điều khiển xem cha mẹ của bạn (bạn cũng có thể duyệt qua hệ thống phân cấp bộ điều khiển xem sao lưu cho phụ huynh).

Ngoài ra, các nút Quay lại có giới hạn ký tự. Nếu bạn vượt quá giới hạn ký tự đó, hệ thống sẽ mặc định là "Quay lại". Nó sẽ không cắt xén cho bạn. Ví dụ:

backItem.title = "Birthdays/Anniversaries" // Get's converted to "Back". 
backItem.title = "Birthdays/Anniversa…" // Fits and shows as is. 

1

Bạn chỉ có thể thay đổi NavigationItem trong storyboard

enter image description here

Trong Nút Trở lại thêm khoảng trắng và nhấn Enter.

Lưu ý: Thực hiện việc này trong VC trước đó.