#ios #xamarin.ios #monotouch.dialog
#iOS #xamarin.ios #monotouch.dialog
Вопрос:
Я разрабатываю приложение на основе навигации, и у меня есть пользовательский titleView и rightBarButtonItem для панели навигации, которые я хочу видеть во всех элементах навигации моего приложения (например, логотип и кнопка меню, к которым вы можете получить доступ из всех представлений).
Есть ли какая-либо хорошая практика для реализации этого, а не для ручной настройки titleView и rightBarButtonItem каждый раз, когда я нажимаю новый ViewController? Я использую monotouch.dialog, но любые советы приветствуются, поскольку это больше похоже на вопрос о sdk.
С уважением,
Ответ №1:
Похоже, что наследование было бы решением для вас.
Возможно, вам следует подумать о создании материнского класса UIViewController, который занимается настройкой titleView и элемента RightBarButton, и тогда весь UIViewController из вашего приложения унаследует от этого класса.
Ответ №2:
Возможно, вы захотите сначала спросить себя, действительно ли вам нужна UINavigationBar, которая напрямую связана с UINavigationController, или вам нужна статическая UIToolbar с вашим контентом.
В качестве альтернативы вы могли бы сделать то, на что ссылается @MartinMoizard, который является подклассом UIViewController. Я предоставил образцы для обоих ниже. Приветствия!
public class MyToolbar : UIToolbar
{
public MyToolbar()
: base()
{
var myTitle = MyCustomUIlabel();
var myButton = MyCustomUIButton();
this.SetItems(new UIBarButtonItem[] {
myTitle,
new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
myButton });
}
}
public class MyViewController : UIViewController
{
public MyViewController()
: base()
{
}
public override void ViewDidLoad()
{
//
// .. setup your code hurr' dawg
//
this.NavigationItem.RightBarButtonItem = myRightButton;
this.NavigationItem.Title = "My Title";
}
}
Комментарии:
1. спасибо за примеры! я думаю, что буду следовать подходу @MartinMoizard, потому что мне все еще нужна кнопка «Назад», доступная на контроллере навигации.