2011-03-17 10 views
2

안녕하세요, UIViewController의 스택이 UINavigationController 안에 있습니다. 일반적으로 제목 (또는 NavigationItem 제목)은 NavigationBar (맨 위에 표시)에 표시되는 제목 인 의 모든 탐색 단추 (예 : 탐색 모음 자체의 뒤로 단추)를 결정합니다.내비게이션 막대 및 탐색 버튼의 제목이 다릅니다.

이제 단추 레이블을 짧고 간결하게 유지하면서 (예 :보기 제목이 "< 고객 이름 > 개요"인 NavigationBar의 제목에 더 많은 정보를 입력 할 계획입니다. 그냥 "개요"표시).

현재 NavigationItem의 제목을 ViewWillAppearViewWillDisappear으로 변경하여이 작업을 수행하려고합니다. 이것은 잘 작동하지만 텍스트가 바뀌는 순간을 볼 수 있습니다 (아마도 애니메이션 때문에). ViewDidAppearViewDidDisappear과 다른 조합을 시도했지만 효과는 Will 방법으로 가장 좋았습니다. 이에 대한 예제 코드는 아래와 같습니다 (Example 클래스는 UINavigationController에 푸시됩니다).

더 좋은 방법이 있나요? 단추 제목을 단순히 변경하면 만 탐색하거나 탐색 제목을 직접 변경하면됩니까? 또는 표준 메커니즘이 다른 모든 인스턴스에 제목을 복사하지 못하게 할 수 있습니까?

설정 backBarButtonItem보기 컨트롤러의 탐색 항목 : 내가 제대로 이해하면

public class Example : UIViewController 
{ 
    private int depth; 

    public Example (int depth = 0) 
    { 
     this.depth = depth; 
     this.Title = "Title"; 
    } 

    public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 

     UIButton btn = new UIButton(new RectangleF(100, 100, 300, 50)); 
     btn.SetTitle("Duplicate me!", UIControlState.Normal); 
     btn.TouchDown += delegate(object sender, EventArgs e) { 
      NavigationController.PushViewController(new Example(depth + 1), true); 
     }; 
     View.Add(btn); 
    } 

    public override void ViewWillAppear (bool animated) 
    { 
     base.ViewWillAppear(animated); 
     this.NavigationItem.Title = String.Format("Title/{0}", depth); 
    } 

    public override void ViewWillDisappear (bool animated) 
    { 
     base.ViewWillDisappear(animated); 
     this.NavigationItem.Title = "Title"; 
    } 
} 

답변

4

, 나는 기성이를 위해이 있다고 생각.

+0

그러나 * next *보기에서 단추 제목을 설정해야합니다. 그래서 컨트롤러 내에서 뷰 A의 버튼 제목을 변경할 수는 없지만 A에서 탐색으로 푸시 할 수있는 모든 뷰에서 버튼 제목을 변경해야합니다. 따라서 가능한 모든 하위보기 컨트롤러를 모두 변경해야합니다. 상위 컨트롤러를 선택하고 상위 컨트롤러가있는 단추를 업데이트하십시오. – poke

+2

아니요,보기 제어기 A에서 backBarButtonItem을 설정합니다. "backBarButtonItem"은 A가 이전보기 제어기 인 경우 표시 제어기 B가 표시 할 것을 정의합니다. 조금 카운터 직관적 인, 그러나 거기 당신은 간다. –

+0

와우, 좋아. 그것은 정말로 효과가 있었다! 그런 식으로 작동하지 않을 것이라고 기대하지 않았습니다. 고마워요! – poke

관련 문제