programing

Swift에서 버튼 텍스트를 되돌리는 방법

elseif 2023. 4. 19. 22:26

Swift에서 버튼 텍스트를 되돌리는 방법

뒤로 버튼 텍스트를 삭제하려면 어떻게 해야 합니까?

현재 뒤로 버튼:

< 뒤로

원하는 뒤로 버튼:

< Anything Else (임의)

다음 중 어느 것도 작동하지 않았습니다.

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
}

Swift 3, 4, 5:

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

또는

// in your viewDidLoad or viewWillAppear
navigationItem.backBarButtonItem = UIBarButtonItem(
    title: "Something Else", style: .plain, target: nil, action: nil)

다음과 같이 인터페이스 빌더에서 실행할 수 있습니다.

이전 뷰 컨트롤러의 탐색 항목을 클릭합니다.

여기에 이미지 설명 입력

속성 인스펙터의 [뒤로]버튼의 텍스트를 원하는 대로 설정합니다.바로 그거야!!

여기에 이미지 설명 입력

3줄의 코드를 뒤로 버튼의 제목을 변경할 수 있습니다.

고객님의 고객명override func viewDidLoad() {}.

let backButton = UIBarButtonItem()
backButton.title = "My Back Button Title"
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton

뒤로 버튼 텍스트는 상위 뷰 컨트롤러의 탐색 항목 제목에서 가져옵니다.따라서 이전 뷰 컨트롤러의 탐색 항목 제목에서 설정한 내용이 현재 뷰 컨트롤러의 뒤로 버튼 텍스트에 표시됩니다.부모 뷰 컨트롤러의 뷰 Will Appear 메서드에서 "를 네비게이션 항목 제목으로 넣을 수 있습니다.

self.navigationItem.title = ""

또 다른 방법은

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

현재 뷰 컨트롤러 뷰에 표시됩니다.네비게이션 스택이 너무 중첩되면 다른 문제가 발생합니다.

뷰 컨트롤러에 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
}

}

결과는 다음과 같습니다.

여기에 이미지 설명 입력

, 사용한다면 수 것이다.ViewController), class(클래스)의 경우,viewDidLoad() 예, 예, 예, 예, 예:

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

결과는 다음과 같습니다.

전에

여기에 이미지 설명 입력

끝나고

여기에 이미지 설명 입력

뒤로 버튼은 현재 화면에 표시된 컨트롤러가 아닌 이전 뷰 컨트롤러에 속합니다.뒤로 버튼을 변경하려면 버튼을 누르기 전에 업데이트해야 합니다.viewdidload를 추가합니다.

Swift 4:

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

Navigation을 수정하기만 하면 됩니다.스토리보드의 아이템

여기에 이미지 설명 입력

뒤로 버튼에 공백을 추가하고 Enter 키를 누릅니다.

주의: 이 작업은 이전 VC에서 수행합니다.

이 조작은 유효합니다.

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)
}

이것은 실제로 Back Button을 대체하고 뒤로 화살표와 스와이프 제스처도 삭제하기 때문에 권장되지 않습니다.

스위프트 4.2

텍스트를 하려면 이 를 '돌아가다'에 .viewDidLoad뒤로 버튼이 표시되는 뷰 컨트롤러가 아닌 뒤로 버튼이 표시되는 컨트롤러보다 먼저 컨트롤러가 표시됩니다.

 let backButton = UIBarButtonItem()
 backButton.title = "New Back Button Text"
 self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton

현재 탐색 모음 제목 텍스트를 변경하려면 아래 코드를 사용하십시오(이 텍스트는 탐색 컨트롤러에 푸시된 NEXT 보기의 기본 뒤로 이동 텍스트가 되지만 이 기본 뒤로 이동 텍스트는 위의 코드에 의해 재정의될 수 있음).

 self.title = "Navigation Bar Title"

Swift 4 - 뷰 컨트롤러를 누르기 전에 뒤로 버튼을 구성합니다.

// 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)

두 가지 방법이 있습니다.

1. 이전 View Controller에서.viewDidLoad()

let backBarBtnItem = UIBarButtonItem()
backBarBtnItem.title = "back"
navigationItem.backBarButtonItem = backBarBtnItem

2. currentViewController에서.viewDidEar()

let backBarBtnItem = UIBarButtonItem()
backBarBtnItem.title = "back"      
navigationController?.navigationBar.backItem?.backBarButtonItem = backBarBtnItem

: 유 :backButton~에서 navigationBar.backItem.backBarButtonItemcurrentViewControllercurrentViewController.currentViewController.에서 viewDidLoad()와 viewDidLoad()의 참조backItem에서는 viewDidEar()이기 navigationBarnavigationView its stack 을 가할 수 ★★★★★★★★★★★★★★★★,backItemcurrentViewController. viewDidEar()합니다.

자세한 내용은 다음 문서를 참조하십시오.UINavigation Bar(UINavigation Bar)

뒤로 버튼 텍스트 및 컬러 텍스트:

navigationController?.navigationBar.tintColor = .red
navigationController?.navigationBar.topItem?.backButtonTitle = "Hi"

서서 viewDidLoad컨트롤러 추가를 표시하는 방법:

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

이 답변들이 문제를 해결하지만 이것은 도움이 될 수 있습니다.

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)

    }

}

스위프트 4

segue를 준비하라는 이전 속담은 옳고 back 버튼은 이전 VC에 속하지만 불필요한 코드를 많이 추가하는 것뿐입니다.

가장 좋은 방법은 viewDidLoad에서 현재 VC의 제목을 설정하는 것입니다. 그러면 다음 VC에서 뒤로 버튼 제목이 자동으로 올바르게 설정됩니다.이 대사는 나에게 통했다.

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

저는 좋아요.스위프트 5

navigationItem.backButtonTitle = ""

이것은 Swift 5에 유효합니다.

self.navigationItem.backBarButtonItem?.title = ""

현재 디스플레이가 아닌 다음 푸시 뷰 컨트롤러에 효과적이기 때문에 매우 혼란스럽습니다!

또한 스토리보드를 확인하고 이전 뷰 컨트롤러의 탐색 항목을 선택한 다음 뒤로 버튼(인스펙터)에 무언가를 입력하십시오.

이거 드셔보세요.효과가 있을 것이다

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

위 코드는 텍스트를 숨기고 탐색 모음에 뒤로 화살표만 표시합니다.

스위프트 4

이 경우 마스터 뷰 컨트롤러의 네비게이션 항목을 클리어한 후 Child View Controller로 이동하는 것이 해결책입니다.그리고 다시 표시되는 경우 다시 설정합니다.

마스터 컨트롤러

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationItem.title = "Master Title"
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationItem.title = ""
}

UIViewController를 눌러 자 컨트롤러의 Back Bar 버튼 항목을 지우는 방법은 다음과 같습니다.

마스터 컨트롤러

let childController = ChildController(collectionViewLayout: UICollectionViewFlowLayout())
childController.navigationItem.backBarButtonItem?.title = ""
navigationController?.pushViewController(childController, animated: true)

뒤로 버튼 텍스트를 변경할 뷰 컨트롤러를 누르는 위치에서 뷰 컨트롤러에 다음 코드를 추가할 수 있습니다.

스위프트 5

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

예를 들어 다음과 같습니다.

  1. 뷰 컨트롤러 1
  2. View Controller 2

뷰컨트롤러2의 제목을 업데이트하고 뷰컨트롤러1에서 뷰컨트롤러2를 푸시한다고 가정합니다.

다음 코드를 사용할 수 있습니다.-

let vc2 = storyboard.instantiateViewController(withIdentifier: "ViewController2")
self.navigationItem.backBarButtonItem = UIBarButtonItem(title:  "your custom back button title", style: .plain, target: self, action: nil)
self.navigationController?.pushViewController(vc2, animated: true)

세트self.title = ""전에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
}

도움이 되었으면 좋겠다!!#4103

페이지 뷰 컨트롤러 페이지에서 뷰 컨트롤러를 누르는 경우 네비게이션 컨트롤러의 뒤로 버튼 제목을 업데이트할 수 없습니다.이 문제를 해결하려면 상위 뷰 컨트롤러로 다시 위임자를 만듭니다(또한 뷰 컨트롤러 계층을 다시 상위 뷰 컨트롤러로 이동할 수도 있습니다).

또한 뒤로 버튼에는 문자 제한이 있습니다.이 문자 제한을 초과하면 시스템은 기본적으로 "뒤로"로 설정됩니다.잘리지 않습니다.예를 들어 다음과 같습니다.

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

Swift 4.2의 경우

let backItem = UIBarButtonItem()
backItem.title = ""
navigationItem.backBarButtonItem = backItem

GOTCHA: 다수의 스타 제안 중 하나라도 문제가 있는 경우,UITableViewCell에 있다viewDidLoad()~부터가아닙니다.init()

솔루션 확인 후 Swift 5에서 동작

이하에, 다양한 케이스에 대한 몇개의 솔루션을 나타냅니다.

1. 뒤로 버튼에서 텍스트 삭제

뒤로 버튼에서 텍스트를 삭제하는 가장 좋은 방법은 viewDidLoad()에 추가하는 것입니다.

navigationItem.backBarButtonItem = UIBarButtonItem()

2. 뒤로 버튼에 자체 텍스트 설정

자신의 제목을 설정하려면 backButton의 제목을 설정합니다.

let backButton = UIBarButtonItem()
backButton.title = "My Title"
navigationItem.backBarButtonItem = backItem

3. 모든 VC의 [돌아가기]버튼

전체 앱에서 공통 스타일을 만들려면 텍스트 없이 화살표만 뒤로 이동하려면 모든 View Controller에 대한 기본 VC를 만드십시오.

class BaseViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        navigationItem.backBarButtonItem = UIBarButtonItem()
    }
}

위에 제시된 솔루션에서는 나중에 변수를 추가하여 특정 ViewController에서 덮어쓰기함으로써 예외를 둘 경우 나중에 뒤로 버튼을 커스터마이즈할 수 있습니다.

class BaseViewController: UIViewController {

    var customBackButtonTitle: String?

    override func viewDidLoad() {
        super.viewDidLoad()

        var backButton = UIBarButtonItem()
        if let text = customBackButtonTitle {
            backButton.title = text
        }
        navigationItem.backBarButtonItem = backButton
    }
}

그 부분을 이식하는 방법에는 두 가지가 있습니다.

1.

navigationItem.backButtonTitle = "Title Goes Here"

(제5장)

  2.

 let backButton = UIBarButtonItem()

backButton.title = "Title Goes Here" self.navigationController?navigationBar.topItem?backBarButtonItem = backButton

 

언급URL : https://stackoverflow.com/questions/28471164/how-to-set-back-button-text-in-swift