안녕하세요, UIViewController
의 스택이 UINavigationController
안에 있습니다. 일반적으로 제목 (또는 NavigationItem 제목)은 NavigationBar (맨 위에 표시)에 표시되는 제목 인 과의 모든 탐색 단추 (예 : 탐색 모음 자체의 뒤로 단추)를 결정합니다.내비게이션 막대 및 탐색 버튼의 제목이 다릅니다.
이제 단추 레이블을 짧고 간결하게 유지하면서 (예 :보기 제목이 "< 고객 이름 > 개요"인 NavigationBar의 제목에 더 많은 정보를 입력 할 계획입니다. 그냥 "개요"표시).
현재 NavigationItem의 제목을 ViewWillAppear
및 ViewWillDisappear
으로 변경하여이 작업을 수행하려고합니다. 이것은 잘 작동하지만 텍스트가 바뀌는 순간을 볼 수 있습니다 (아마도 애니메이션 때문에). ViewDidAppear
및 ViewDidDisappear
과 다른 조합을 시도했지만 효과는 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";
}
}
그러나 * next *보기에서 단추 제목을 설정해야합니다. 그래서 컨트롤러 내에서 뷰 A의 버튼 제목을 변경할 수는 없지만 A에서 탐색으로 푸시 할 수있는 모든 뷰에서 버튼 제목을 변경해야합니다. 따라서 가능한 모든 하위보기 컨트롤러를 모두 변경해야합니다. 상위 컨트롤러를 선택하고 상위 컨트롤러가있는 단추를 업데이트하십시오. – poke
아니요,보기 제어기 A에서 backBarButtonItem을 설정합니다. "backBarButtonItem"은 A가 이전보기 제어기 인 경우 표시 제어기 B가 표시 할 것을 정의합니다. 조금 카운터 직관적 인, 그러나 거기 당신은 간다. –
와우, 좋아. 그것은 정말로 효과가 있었다! 그런 식으로 작동하지 않을 것이라고 기대하지 않았습니다. 고마워요! – poke