태그 보관물: uiviewcontroller

uiviewcontroller

탭바 항목 제목과 무관하게 uiviewcontroller 제목을 변경하는 방법 보드에 제목을 설정했습니다.

뷰에서 다음과 같이 뷰 컨트롤러 제목을 설정하고 있습니다.

self.title = @"my title";

그 전에 나는 그것이 내장 된 뷰 컨트롤러와 내비게이션 컨트롤러를 위해 스토리 보드에 제목을 설정했습니다. 나는 이것을 “Title”로 설정했습니다.

뷰 컨트롤러가있는 탭을 클릭하면 탭 표시 줄 항목의 제목이 uiviewcontroller다음으로 변경됩니다. 내 제목

보기 컨트롤러를 변경하고 싶지만 탭 표시 줄 항목은 제목 : 제목과 함께 유지됩니다.

어떻게 할 수 있습니까?



답변

탐색 표시 줄의 제목은 변경하고 탭 표시 줄의 제목은 변경하지 않으려는 것 같습니다. 그렇게해야합니다.

[self.navigationItem setTitle:@"my title"];

빠른:

self.navigationItem.title = "My Title"

답변

그래도 이해하지 못하는 사람들을 위해 (나처럼)

self.navigationItem.title = @"my title";탐색 모음 제목을 설정합니다 .

self.tabBarItem.title = @"my title";탭 표시 줄 제목을 설정합니다 .

self.title = @"my title";두 가지 .


답변

빠른

상단 표시 줄 제목 설정

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

탭 항목 제목 설정

self.tabBarController?.tabBar.items?[0].title = "tab title"

두 제목 설정

self.title = "both titles"

답변

들어 스위프트는 이를 사용,

self.navigationItem.title = "Navigation bar title"
self.title = "Tab bar title"

답변

참고 : 각보기 컨트롤러의 루트에 탐색 컨트롤러가있는 탭 모음 컨트롤러가있는 경우 .NET Framework를 설정하는 경우보기 컨트롤러의 탭 모음 항목을 설정해도 제목에 영향을주지 않습니다 navigationItem.title. tabBarItem탭 막대 컨트롤러에서 선택하려면 대신 탐색 컨트롤러에을 설정해야합니다 .

내 탭 바의 뷰 컨트롤러에는 모두 루트에 탐색 컨트롤러가 있기 때문에 다른 사람이 게시 한 답변 중 어느 것도 나를 위해 일하지 않았습니다. 이것은 UITabBarController. tabBarItem대신 내비게이션 컨트롤러를 설정 해야 제목이navigationItem 의 제목

tabBarItem직접 생성하여 VC에 연결할 수 있습니다 .

    let tabBarVCOne = BooksListViewController()
    tabBarVCOne.tabBarItem = UITabBarItem(title: "Books", image: nil, tag: 0)

    tabBarViewControllers.append(tabBarVCOne)
    ...

그러면 다음과 같은 것이 생깁니다.

    //Wrap each view controller in a navigation controller. 
    self.viewControllers = tabBarViewControllers.map(UINavigationController.init)

그러나 tabBarItem뷰 컨트롤러에서 이미 연결된 항목을 가져와 탐색 컨트롤러에 자동으로 설정 하려면 다음과 같이 변경해야합니다 .

    self.viewControllers = tabBarViewControllers.map({
        let navigationController = UINavigationController(rootViewController: $0)
        navigationController.tabBarItem = $0.tabBarItem
        return navigationController
    })

이제 .NET에 정의 된 제목과는 별도로 VC에서 설정 한 다른 제목을 가질 수 있습니다 tabBarItem.


답변

이것에 꽤 늦었습니다. TabBarController를 UITabBarControllerDelegate 및 UINavigationControllerDelegate로 사용하고 각 탭에 포함 된 탐색 컨트롤러로 사용할 수 있습니다.

.h :

@interface YourTabBarController : UITabBarController <UITabBarControllerDelegate, UINavigationControllerDelegate>

@end

.미디엄:

- (void) viewDidLoad {
    // UITabBarControllerDelegate
    self.delegate = self;

    // UINavigationControllerDelegates
    yourNavigationController.delegate = self;
    ...
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
    yourNavigationController.tabBarItem.title = @"Tab Bar Title";
    ...
}

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    yourNavigationController.tabBarItem.title = @"Tab Bar Title";
    ...
}

몇 가지 빠른 테스트에 따르면이 두 대리자 작업은 느슨한 경우를 처리해야하며 탭을 전환하거나 탐색 컨트롤러에서 탐색 할 때 제목을 업데이트합니다. 완전성을 위해 didShowViewController 에서도 제목을 업데이트 할 수 있지만 내가 본 것을 기반으로 할 때 필요하지 않다고 생각합니다.


답변

아마 조금 늦었을 것입니다 (그러나).

VC의 제목을 설정하면 Navigation 및 tabBar의 제목이 변경됩니다. (VC가 이미 둘 다에 연결되어있는 경우).

별도의 제목을 갖고 싶다면 수동으로 설정해야합니다. 일반적으로 VC의 제목을 설정 한 다음 특히 tabBarItem의 제목을 설정해야합니다.