2014-04-26 3 views
11

UIViewController 하위 클래스가 있습니다. 이 같은 viewDidLoad에서 뷰 컨트롤러에게 rightBarButtonItem 줄 :UIBarButtonItem 제목을 변경할 때 전환이 갑자기/깜박임

사용자가 뷰의 다른 버튼을 누를
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Difficulty" 
     style:UIBarButtonItemStylePlain 
     target:nil 
     action:nil]; 

에서, UIBarButtonItem 제목/텍스트는 다음과 같이 변경된다 :

self.navigationItem.rightBarButtonItem.title = @"Mellansvår"; 

그것은 잘 작동하지만, 제목이 변경되면 아주 좋아 보이지 않습니다. 텍스트가 조금 씩 올라갑니다.

는 내가 전에 런타임에 UILabel 텍스트를 변경하고, 내가 그들의 텍스트 같이하지 않는 것입니다을 변경할 수 있지만 때 나는 navigationItemUILabel를 추가하는 방법을 모르겠어요. 내비게이션 막대가 UINavigationController에서 나왔기 때문에 Interface Builder에서이 작업을 수행 할 수 없습니다.

제목을 더 부드럽게 바꿀 수있는 방법이 있습니까?

답변

3

대신 다시 제목을 설정, 당신은 제목과 버튼을 다시 설정 한 후 애니메이션 수 :

(void)setRightBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated 
1

또 다른 해결책은 애니메이션없이 제목을 변경하는 것입니다.

[UIView performWithoutAnimation:^{ 
    self.navigationItem.rightBarButtonItem.title = @"Mellansvår"; 
}]; 
당신이이처럼 navigationItem에 연결되지 동안 당신이 UIBarButtonItem 제목을 변경하는 경우, 모두 애니메이션을 건너 뛸 수 있습니다
0

:

UIBarButtonItem *tempItem = self.navigationItem.rightBarButtonItem; 
self.navigationItem.rightBarButtonItem = nil; 
tempItem.title = @"Mellansvår"; 
self.navigationItem.rightBarButtonItem = tempItem; 

애니메이션이 완전히 사라지지만 시각적 효과가 IMHO보다 좋아 보인다.

관련 문제