[ios] UINavigationBar 뒤로 숨기기 버튼 텍스트

UINavigation 컨트롤러에서 뒤로 버튼 텍스트를 숨기려면 어떻게해야합니까? “<뒤로”가 아닌 “<“만 표시됩니다.



답변

인터페이스 빌더 에서 이전 컨트롤러의 탐색 항목을 선택 Back Button하고 뒤로 버튼을 표시 할 문자열로 변경할 수 있습니다. 예를 들어 공백을 원하면 공백을 넣으십시오.

다음 코드 줄로 변경할 수도 있습니다 .

[self.navigationItem.backBarButtonItem setTitle:@"Title here"];

또는 Swift에서 :

self.navigationItem.backBarButtonItem?.title = ""


답변

스토리 보드를 통해서도 가능합니다. 이전 컨트롤러 탐색 항목의 속성 검사기에서 에서 뒤로 버튼 필드에 “”를 설정할 수 있습니다. 아래 이미지를 참조하십시오. “여기에 제목”을 “”로 바꿉니다. 이렇게하면 원하는 결과를 얻을 수 있습니다. 더 이상 ‘제목’을 엉망으로 만들 필요가 없습니다.

프로그래밍 방식으로 사용할 수 있습니다.

[self.navigationItem.backBarButtonItem setTitle:@" "];

여기서 self 는 원하는 뷰 컨트롤러를 푸시하는 컨트롤러를 나타냅니다.

Xcode보기 컨트롤러 탐색 항목

탐색 모음 이전, 이후 샘플

전에
전에


후


답변

다음 UINavigationControllerDelegate과 같이 구현할 수 있습니다 .

이전 Swift

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
    let item = UIBarButtonItem(title: " ", style: .Plain, target: nil, action: nil)
    viewController.navigationItem.backBarButtonItem = item
}

스위프트 4.x

class MyNavigationController: UINavigationController, UINavigationControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
    }

    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        let item = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
        viewController.navigationItem.backBarButtonItem = item
    }
}

backBarButtonItem이다 nil기본적으로 당신은 단지 모든 컨트롤러로 설정 있도록 다음, 컨트롤러를 밀어 영향을


답변

뒤로 버튼의 제목을로 설정 @""하거나 nil작동하지 않습니다. 전체 버튼을 비워 두어야합니다 (제목이나 이미지 제외).

목표 -C

[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]];

빠른

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

이 작업은 탐색 스택의 뷰 컨트롤러 상단에있는 뷰 컨트롤러에서 수행해야합니다 (즉, pushViewController메서드 를 통해 VC로 이동하는 위치에서 ).


답변

뷰 컨트롤러가 많은 상황에서이 문제에 대한 또 다른 해결책은 UIAppearance프록시를 사용하여 다음과 같이 뒤로 버튼 제목 텍스트를 효과적으로 숨기는 것입니다.

UIBarButtonItem *navBarButtonAppearance = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];

[navBarButtonAppearance setTitleTextAttributes:@{
    NSFontAttributeName:            [UIFont systemFontOfSize:0.1],
    NSForegroundColorAttributeName: [UIColor clearColor] }
                                      forState:UIControlStateNormal];

이 솔루션은 뒤로 버튼 제목을 수동으로 설정하는 것과 유사하게 텍스트를 작은 명확한 점으로 렌더링합니다. @" " 모든 탐색 모음 버튼에 영향을 준다는 점을 제외하고 합니다.

모든 탐색 모음 버튼에 영향을 미치기 때문에이 문제에 대한 일반적인 해결책은 아닙니다. 제목 을 숨길 때가 아니라 버튼 제목 을 표시 할 때를 선택할 수 있도록 패러다임을 뒤집습니다 .

제목을 표시 할시기를 선택하려면 필요에 따라 제목 텍스트 속성을 수동으로 복원하거나 UIBarButtonItem동일한 작업을 수행 하는 특수 하위 클래스를 만듭니다 (잠재적으로 다른 UIAppearance프록시 사용).

대부분의 뒤로 버튼 제목을 숨겨야하는 앱이 있고 탐색 버튼 중 일부 (또는 아예 없음) 만 제목이있는 시스템 버튼 인 경우 이것이 적합 할 수 있습니다!

(참고 : 긴 제목으로 인해 중앙 탐색 모음 제목이 이동하지 않도록하려면 텍스트 색상이 명확하더라도 글꼴 크기를 변경해야합니다.)


답변

viewDidLoad 또는 loadView에 다음 코드를 추가합니다.

self.navigationController.navigationBar.topItem.title = @"";  

iOS 9가 설치된 iPhone 및 iPad에서 테스트했습니다.


답변

이 Objective-C 카테고리를 추가하여 내비게이션 컨트롤러에 의해 생성 된 모든 “뒤로”버튼에 텍스트가 없도록 할 수 있습니다. 방금 AppDelegate.m 파일에 추가했습니다.

@implementation UINavigationItem (Customization)

/**
 Removes text from all default back buttons so only the arrow or custom image shows up.
 */
-(UIBarButtonItem *)backBarButtonItem
{
    return [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
}

@end

추신-(이 확장 기능을 Swift와 함께 사용하는 방법을 모르겠습니다. 이상한 오류가 발생했습니다. Swift 버전 추가를 환영합니다.)