내 앱이로드되면 마지막으로 앱을 실행했을 때 사용자가 설정 한 저장된 설정에 따라 탭 중 하나에서 이미지를 변경하고 싶습니다. 사용자가 탭의 viewcontroller의 ViewDidLoad 메서드를 실행하는 탭을 클릭하면 이미지를 변경할 수 있습니다. 아래 참조 :iPhone, UITabBarItem : 앱이 시작될 때 탭 막대의 이미지를 동적으로 변경합니다.
UITabBarItem *tabItem;
if (condition = YES) {
tabItem = [[UITabBarItem alloc] initWithTitle:@"Filter" image:[UIImage imageNamed:@"filter plus.png"] tag:self.view.tag];
}
else {
tabItem = [[UITabBarItem alloc] initWithTitle:@"Filter" image:[UIImage imageNamed:@"filter.png"] tag:self.view.tag];
}
self.navigationController.tabBarItem = tabItem;
[tabItem release];
[super viewDidLoad];
그러나 나는 그것이로드 할 때 응용 프로그램의 루트 뷰 컨트롤러에서 해당 탭의 UITabBarItem에 액세스하고 변경하는 방법을 알아낼 수 없었다. 아래의 루트보기 컨트롤러의 viewdidload 메소드를 참조하십시오.
UITabBarItem *tabItem;
if (condition = YES) {
tabItem = [[UITabBarItem alloc] initWithTitle:@"Filter" image:[UIImage imageNamed:@"filter plus.png"] tag:self.view.tag];
}
else {
tabItem = [[UITabBarItem alloc] initWithTitle:@"Filter" image:[UIImage imageNamed:@"filter.png"] tag:self.view.tag];
}
// get the view controller of the tab I want to change
MyViewController *vc = [self.tabBarController.viewControllers objectAtIndex:2];
ft.tabBarItem = tabItem;
[tabItem release];
[super viewDidLoad];
이것이 작동하지 않을 때 나는 uitabbaritem에 액세스하고 변경하는 여러 가지 다른 방법을 시도했지만 아무 것도 효과가 없었습니다. UITabBarItem 및 UINavigationController 루트 뷰 컨트롤러에서 IBOutLets 만들기 시도했다.
// tb is an iboutlet to the UITabBarItem
self.tb = tabItem;
// nc is an iboutlet to the UINavigationController
self.nc.tabBarItem = tabItem;
. 어떤 생각을 어떻게 할 것인가?
주요 장점은 코드를 읽기 쉽게 만든다는 것입니다. –