2009-09-08 4 views
2

이 작동하는 이유는 어떤 생각 :의 UITabBar 배지 설정

[[[[[self tabBarController] tabBar] items] objectAtIndex:2] 
              setBadgeValue:@"Hello"]; 

을하지만이하지 않는?

[[self tabBarItem] setBadgeValue:@"Hello"]; 

차라리 (위의 코드 2) 명시 적 탭 표시 줄 인덱스를 제공 할 필요가 없습니다 것입니다. 또한 첫 번째 스 니펫이이 작업을 수행하는 유일한 방법 인 경우보기 컨트롤러에서 탭 막대 인덱스를 가져 오는 방법이 있습니까?

감사합니다.

답변

0

tabBarViewController에 실제로 참조 할 tabBarItem이 있습니까? 그 다음에 당신의 문제가 아니라면. tabBarviewCOntroller에서 뷰 컨트롤러를 설정할 때 순서를 지정하기 때문에 viewController의 인덱스를 알 수 있으므로 tabController를 tabBarViewController에서 첫 번째로 설정하면 해당 버튼의 인덱스는 0이됩니다.

귀하의 질문에 내게 분명히 대답, 명시된대로 UITabBarController viewController 일단 그것을 설정하면 해당 tabBarItem 잡아 및 해당 viewController 속성 나중에 tabBarViewController (내가 잘못 추측 할 수도 있습니다 업데이트 할 얻을 변경)

+0

조금 더 명확히 해 주시겠습니까? IB의 탭 막대에보기 컨트롤러를 추가하면보기 컨트롤러의 tabbaritem이 자동으로 설정된다는 인상하에있었습니다. 변수 tabBarItem은 확실히 nil이 아니며 올바른 제목을 갖지만 tabBar items 배열을 통해 액세스 된 것과 동일한 주소가 아닙니다. –

+0

그냥 애플의 문서에서 발견 : "탭 막대 항목은 해당보기 컨트롤러를 통해 구성됩니다. 탭 막대 항목을보기 컨트롤러와 연결하려면 UITabBarItem 클래스의 새 인스턴스를 만들고보기 컨트롤러에 맞게 적절히 구성한 다음 보기 컨트롤러의 tabBarItem 속성에 할당하십시오. 사용자보기 탭 컨트롤러에 대한 사용자 지정 탭 막대 항목을 제공하지 않으면보기 컨트롤러는 이미지 및보기 컨트롤러의 제목 속성에서 텍스트를 포함하는 기본 항목을 만듭니다. 인덱스를 작성하는 것보다는 배열을 통해 배열에 액세스하려고한다고 생각하십시오. –

+0

아, 내가 지금하고있는 것을 보았다. 예를 들어 당신이 제공 한 예제가 작동해야하는 것처럼 보인다 ... 어떤 생각이들 수도있다. 일단 viewController를 tababrcontroller에 할당하면 tabbaritem을 캡처 한 다음 나중에 viewController tabBarItem tabBarViewController가 업데이트를 확인하지 않기 때문에 버튼이 업데이트되지 않습니다. – Daniel