Swift에서 버튼 텍스트를 다시 설정하는 방법
뒤로 버튼 텍스트를 어떻게 제거합니까?
current back button: <Back
desired back button: <AnythingElse
이 중 어느 것도 효과가 없었습니다.
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
뒤로 버튼은 현재 화면에 표시되는 것이 아니라 이전 뷰 컨트롤러에 속합니다 .
뒤로 버튼을 수정하려면 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
}
스위프트 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
}
다음과 같이 인터페이스 빌더에서이를 수행 할 수 있습니다.
이전보기 컨트롤러의 탐색 항목을 클릭하십시오
속성 관리자에서 뒤로 버튼 텍스트를 원하는 것으로 설정하십시오. 그게 다야 !!
뒤로 버튼 텍스트는 상위 뷰 컨트롤러의 탐색 항목 제목에서 가져옵니다. 따라서 이전보기 컨트롤러의 탐색 항목 제목에서 설정 한 내용은 현재보기 컨트롤러의 뒤로 단추 텍스트에 표시됩니다. 상위 뷰 컨트롤러의 viewWillAppear 메소드에서 탐색 항목 제목으로 ""를 넣을 수 있습니다.
self.navigationItem.title = ""
또 다른 방법은
self.navigationController?.navigationBar.topItem?.title = ""
현재 뷰 컨트롤러의 viewWillAppear 메소드에서 탐색 스택이 너무 중첩 된 경우 다른 문제가 발생합니다.
뷰 컨트롤러에 xib 파일을 사용하는 경우 뷰 컨트롤러 클래스에서이 작업을 수행하십시오.
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
}
}
결과는 다음과 같습니다.
이 3 줄의 코드를에 넣을 수 있습니다 override func viewDidLoad() {}
.
let backButton = UIBarButtonItem()
backButton.title = "name"
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
I do not know where you have used your methods that you put on your question but I could get the desired result if I use, on my ViewController
class (in which I want to change the back button), on viewDidLoad()
function, the following line:
self.navigationController?.navigationBar.backItem?.title = "Anything Else"
The result will be:
Before
After
The back button belongs to the previous view controller, not the one currently presented on screen. To modify the back button you should update it before pushing, add viewdidload :
Swift 4:
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, action: nil)
You can just modify the NavigationItem in the storyboard
In the Back Button add a space and press Enter.
Note: Do this in the previous VC.
This should work:
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)
}
Although it is not recommended since this actually replaces the backButton and it also removed the back arrow and the swipe gesture.
Swift 4 - Configure the back button before pushing any view controllers
// if you want to remove the text
navigationItem.backBarButtonItem = UIBarButtonItem()
// if you want to modify the text to "back"
navigationItem.backBarButtonItem = UIBarButtonItem(title: "back", style: .plain, target: nil, action: nil)
Swift 4.2
If you want to change the navigation bar back button item text, put this in viewDidLoad
of the controller BEFORE the one where the back button shows, NOT on the view controller where the back button is visible.
let backButton = UIBarButtonItem()
backButton.title = "New Back Button Text"
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
If you want to change the current navigation bar title text use the code below (note that this becomes the default back text for the NEXT view pushed onto the navigation controller, but this default back text can be overridden by the code above)
self.title = "Navigation Bar Title"
In the viewDidLoad
method of the presenting controller add:
// hide navigation bar title in the next controller
let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backButton
Swift 4
While the previous saying to prepare for segue is correct and its true the back button belongs to the previous VC, its just adding a bunch more unnecessary code.
The best thing to do is set the title of the current VC in viewDidLoad and it'll automatically set the back button title correctly on the next VC. This line worked for me
navigationController?.navigationBar.topItem?.title = "Title"
Try this... it will work ....
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
self.title = ""
}
The above code will hide the text and show only the back arrow on navigation bar.
although these answers fix the problem but this could be some useful
class MainNavigatioController: UINavigationController {
override func pushViewController(_ viewController: UIViewController, animated: Bool) {
// first
let backItem = UIBarButtonItem()
backItem.title = "رجوع"
self.viewControllers.last?.navigationItem.backBarButtonItem = backItem
// then
super.pushViewController(viewController, animated: animated)
}
}
Set self.title = ""
before self.navigationController?.pushViewController(vc, animated: true)
.
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
}
Hope it helps!! #swift 3
If you are pushing a view controller from page view controller page, you cannot update the navigation controller's back button title. To solve this create a delegate back to your parent view controller (you may also be able to traverse the view controller hierarchy back up to the parent).
또한 뒤로 버튼에는 문자 제한이 있습니다. 해당 문자 제한을 초과하면 시스템은 기본적으로 "뒤로"로 설정됩니다. 당신을 위해 잘리지 않습니다. 예를 들면 다음과 같습니다.
backItem.title = "Birthdays/Anniversaries" // Get's converted to "Back".
backItem.title = "Birthdays/Anniversa…" // Fits and shows as is.
스위프트 4
필자의 경우 솔루션은 Child View Controller로 이동하기 전에 Master View Controller의 탐색 항목을 지우는 것이 었습니다. 다시 표시되면 다시 설정하십시오.
MasterController
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationItem.title = "Master Title"
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationItem.title = ""
}
그리고 이것은 UIViewController를 푸시하고 자식 컨트롤러에서 백 바 버튼 항목을 지우는 방법입니다.
MasterController
let childController = ChildController(collectionViewLayout: UICollectionViewFlowLayout())
childController.navigationItem.backBarButtonItem?.title = ""
navigationController?.pushViewController(childController, animated: true)
스위프트 4.2
let backItem = UIBarButtonItem()
backItem.title = ""
navigationItem.backBarButtonItem = backItem
스위프트 4
현재 viewController에서 프로그래밍 방식으로 backButton의 텍스트를 변경하는 한 가지 방법이 있습니다.
navigationController?.navigationBar.items![0].title = "some new text"
참고 URL : https://stackoverflow.com/questions/28471164/how-to-set-back-button-text-in-swift
'Programing' 카테고리의 다른 글
호버에서 굵게 표시 될 때 인라인 요소 이동 (0) | 2020.05.20 |
---|---|
phpmyadmin 사용자 세션이 너무 빨리 시간 초과되지 않도록 설정하는 방법은 무엇입니까? (0) | 2020.05.20 |
캐시되고 PHP로 생성 된 썸네일이 느리게로드됩니다 (0) | 2020.05.19 |
사람들은 Go에서 인증을 어떻게 관리하고 있습니까? (0) | 2020.05.19 |
String.Empty가 상수가 아닌 이유는 무엇입니까? (0) | 2020.05.19 |