2010-02-26 4 views
2

내 앱의 특정 탭 표시 줄 항목에 배지가 있는지 프로그래밍 방식으로 알아 내려고하고 있습니다.iPhone : uitabbaritem에서 배지 값을 읽는 중 문제가 발생했습니다.

디버깅하는 동안 시각적으로 디버깅하는 동안 분명히 볼 수 있습니다. 그러나이 코드를 viewController에서 실행할 때 :

UITabBarItem* thisVCsTabBarItem = self.tabBarItem; 
NSString* badgeValue = thisVCsTabBarItem.badgeValue; 

... badgeValue는 nil입니다. 그리고 디버거에서이 VCsTabBarItem을 검사 할 때 _badgeValue 멤버는 nil입니다.

여기 무슨 일 이니? 탭 막대 항목에서이 값을 읽으려는 시도에서 다르게해야합니까?

감사합니다.

+1

이렇게하면됩니다. self.tabBarItem이 생각하는 객체를 반환하고 있습니까? – Don

+0

좋은 질문입니다. 그것은 이미지가 설정되어 있지 않지만 올바른 제목을 가지고 있습니다 ... 그리고 화면의 탭 표시 줄을 보면 분명히 설정됩니다. 이미 새 탭 표시 줄 항목이 이미 존재하더라도 인스턴스화하는 것일까 요? (내가 이미 코드를 설정 했으므로 이미 존재한다는 것을 알고 있습니다 ... 그 이유는 배지가 붙어있는 이유입니다!) –

답변

1

는 내가 다운로드 탭이 그런 짓을 :

for (UITabBarItem* item in self.tabBarController.tabBar.items) { 
    if (item.tag == 3) { 
     if (downloadCount > 0) { 
      item.badgeValue = [NSString stringWithFormat: @"%d", downloadCount]; 
     } else { 
      item.badgeValue = nil; 
     } 
    } 
} 

난 당신이 직접 tabBarItem에 액세스 해야하는 생각하지 않습니다. tabBarController 님의 아이템 배열에서 아이템을 찾는 것이 더 좋습니다. 나는 UITabBarItembadgeValue 속성을 사용하여 몇 가지 코드를 보면

+0

설명서의 내용은 다음과 같습니다. "기본값은보기를 표시하는 탭 막대 항목입니다 컨트롤러의 제목입니다.이 속성에 처음 액세스하면 UITabBarItem이 만들어 지므로 탭 막대 컨트롤러를 사용하지 않는 경우이 속성에 액세스하면 안됩니다. " 하지만 탭 바 컨트롤러를 사용하고 있기 때문에 액세스 할 때 아무런 문제가 없다는 것을 의미합니다. 당신이 문서의 직접 액세스를 나타내는 다른 것을 알고 있습니까 - [UIViewController tabBarItem] 문제가 무엇입니까? 감사. –

2

, 나는 볼이 self.tabBarItem.badgeValue 반환 nilself.navigationController.tabBarItem.badgeValue 동안 반환 올바른 값. 그게 될 수 있을까요?

self 이후 실제로 자동 완성 기능을 사용하면 tabBarItem이됩니다. 그것 때문에 실수하기 쉽습니다.

관련 문제