Tôi đã có một bộ điều khiển xem cha mẹ với một tiêu đề thực sự dài. Điều này dẫn đến văn bản nút quay lại chảy máu vào tiêu đề của trình điều khiển xem con.
Sau khi thử một loạt các giải pháp khác nhau, đây là những gì tôi đã làm (mở rộng theo cách tiếp cận @ john.k.doe):
Sử dụng Xcode 7.2, Swift 2
- Trong Storyboard, thêm một
Navigation Item
đến Chánh View Controller cảnh (không phải là con VC)
- Trên
Attributes Inspector
trang mới của bạn Navigation Item
, nhập một space
ký tự trong Back Button
trường. Thêm về điều này sau.
- Trong trình điều khiển khung nhìn Parent , thêm đoạn mã sau:
đoạn trích:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
switch segue.destinationViewController {
case is ChildViewController:
navigationItem.backBarButtonItem?.title = ""
default:
navigationItem.backBarButtonItem?.title = "Full Parent Title"
}
}
Giải trình:
Loại nút quay lại thuộc về bộ điều khiển xem cha. Việc Navigation Item
cung cấp cho bạn một nút điều khiển cho nút quay lại, do đó bạn có thể đặt tiêu đề theo mã hoặc trong Bảng phân cảnh.
Ghi chú:
Nếu bạn để lại Navigation Item
Back Button
văn bản dưới dạng chuỗi trống mặc định, tiêu đề nút quay lại sẽ trở thành "Quay lại".
Các cách tiếp cận khác hoạt động, tại sao sử dụng phương pháp này?:
Mặc dù có thể ghi đè tiêu đề nút quay lại trên bộ điều khiển chế độ xem trẻ em, nhưng thật khó khăn khi xử lý nó cho đến khi nó xuất hiện nhanh trên màn hình.
Một số cách tiếp cận xây dựng một nút quay lại mới và ghi đè lên nút hiện có. Tôi chắc chắn rằng nó hoạt động, và có lẽ cần thiết trong một số trường hợp sử dụng. Nhưng tôi thích tận dụng các API hiện có khi có thể.
Thay đổi title
bộ điều khiển khung nhìn cha mẹ là giải pháp nhanh nhất cho một số tình huống. Tuy nhiên, điều này thay đổi tiêu đề cha mẹ để bạn phải quản lý trạng thái. Mọi thứ cũng trở nên lộn xộn với một Tab Bar Controller
thay đổi tiêu đề gây ra tác dụng phụ với các Tab Bar Item
tiêu đề.