Xamarin.IOS UIBarbuttonItem добавлен как в рецепте не работает. Нет ошибки, нет кнопки - PullRequest
0 голосов
/ 06 ноября 2018

Использование приложения Xamarin IOS, полученного из шаблона приложения с вкладками. Ориентация на IOS 11+; тестирование в симуляторе на 12.1.

Я добавил UINavigationBar на одну из вкладок UIView и попытался добавить кнопку сохранения и отмены в панель.

Нет ошибок, нет радости, NavigationItem НЕ является нулевым, и показывает правильный элемент навигации. Вот Контур:

--UIViewController MyInfoController
----UIView InfoView
------UINavigationBar NavBar
--------UINavigationItem [no name]
------UIView ContentView
------A bunch of constraints
----UITabBar 

и вот соответствующий фрагмент кода:

    public partial class MyInfoController : UIViewController
{
    protected MyInfoController(IntPtr handle) : base(handle)
    {
        // Note: this .ctor should not contain any initialization logic.
    }

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();
        // Perform any additional setup after loading the view, typically from a nib.

        this.NavigationItem.SetRightBarButtonItem(
            new UIBarButtonItem(UIBarButtonSystemItem.Save, (sender, args) => 
            {
                // Handle Save Button Click here.
                //Create Alert
                var okAlertController = UIAlertController.Create("Click", "Right Button Clicked.", UIAlertControllerStyle.Alert);
                //Add Action
                okAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
                // Present Alert
                PresentViewController(okAlertController, true, null);
            }), true);


        // Try another way...

        var button = new UIBarButtonItem(UIBarButtonSystemItem.Cancel,  (sender, e) =>
        { 
            //Put Something here 
        });

        button.SetTitleTextAttributes(new UITextAttributes()
        {
            TextColor = UIColor.White,
            TextShadowColor = UIColor.Clear
        }, UIControlState.Normal);

        this.NavigationItem.SetLeftBarButtonItem(button, true);
        // Create and add Views

Нет сообщений об ошибках. Я не вижу ничего плохого, но я также не вижу пунктов кнопки панели.

Чего мне не хватает? (: -S)

1 Ответ

0 голосов
/ 07 ноября 2018

Если вы используете ios designer для добавления UINavigationBar и UINavigationItem, вам лучше задать для них имя, например

------UINavigationBar NavBar
--------UINavigationItem BarItem

Итак, в контроллере панель будет отображаться нормально.

 public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();
        // Perform any additional setup after loading the view, typically from a nib.
        this.BarItem.SetRightBarButtonItem(
        new UIBarButtonItem(UIBarButtonSystemItem.Save, (sender, args) =>
        {
            // Handle Save Button Click here.
            //Create Alert
            var okAlertController = UIAlertController.Create("Click", "Right Button Clicked.", UIAlertControllerStyle.Alert);
            //Add Action
            okAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
            // Present Alert
            PresentViewController(okAlertController, true, null);
        }), true);


        // Try another way...

        var button = new UIBarButtonItem(UIBarButtonSystemItem.Cancel, (sender, e) =>
        {
            //Put Something here 
        });

        button.SetTitleTextAttributes(new UITextAttributes()
        {
            TextColor = UIColor.Black,
            TextShadowColor = UIColor.Clear
        }, UIControlState.Normal);

        this.BarItem.SetLeftBarButtonItem(button, true);
    }

Подробнее:

Если вы используете this.NavigationItem, это обычно используется в корневом контроллере UINavigationController.

...