MonoTouch.Dialog: Задний элемент в панели навигации - PullRequest
6 голосов
/ 19 декабря 2011

У меня проблемы с этим вопросом.У моего MainWindow.xib есть NavigationController, вид которого унаследован от другого xib.

Теперь я нажимаю DialogViewController на главном экране, но не могу видеть кнопку возврата напанель навигации второго вида.

Есть ли что-то конкретное, что мне нужно установить для DialogViewController, когда он выталкивается из UIViewController.

Спасибо и С уважением, Абхишек

Ответы [ 4 ]

14 голосов
/ 22 апреля 2012

Конструктор для DialogViewController имеет параметр pushing, для которого следует установить значение true:

new DialogViewController(rootElement, true); // true will show the back button
2 голосов
/ 20 декабря 2011

Не видя ваш код, я точно не знаю, что здесь происходит не так.Однако из того, что я знаю о UINavigationController, стек контроллера представления начинается пустым.Когда вы нажимаете на первый контроллер вида, он дает навигационному контроллеру представление для отображения, но ему нечего возвращаться, поэтому он не отображает кнопку возврата.Если вы нажмете второй вид, вы можете получить кнопку возврата.

Кроме того, убедитесь, что свойство Title установлено на ваших дочерних контроллерах представления, если вы хотите, чтобы кнопка назад отражала вид, которым вы будетевозвращаясь к.

0 голосов
/ 16 апреля 2013

У меня есть контроллер панели вкладок, который затем переключается на навигационный контроллер (в раскадровке с flyoutnavcontollers тоже). Один из контроллеров представления отсюда запускает в контроллер viewview для MT.D вещи.

Я хотел получить красивую заостренную / конусообразную кнопку возврата из диалогового окна monotouch к моей точке вызова в навигационном контроллере.

Но запуск в MT.D приводит к потере навигации, даже если я по какой-то причине использую текущий контроллер навигации, то есть кнопка не отображается и нет возможности вернуться назад. Последующие экраны mt.d дают кнопку назад.

Очевидно, вы должны передать истинное логическое значение в вызов, чтобы активировать кнопку возврата, одновременно нажимая на существующий стек, но у меня это не сработало:

this.NavigationController.PushViewController (dv, true);

Приведенное выше решение Дэна не сработало для меня. Но вывод текущего контроллера диалогового окна в то время как в корневом окне MT.D помогает вернуться к моей предыдущей позиции в исходном контроллере nav в раскадровке (или контроллере flyoutnav).

Не уверен, что этот хак правильный, но работает.

dv.NavigationItem.RightBarButtonItem = new UIBarButtonItem("Back",UIBarButtonItemStyle.Bordered,delegate(object sender,EventArgs e) 
            {   

                NavigationController.PopViewControllerAnimated(true);
            });

* обновление

Мне удалось получить кнопку возврата, добавив dialogviewcontroller к текущему подпредставлению viewcontrollers:

 dvc = new MyDvcController(this.NavigationController);
 this.View.AddSubview(dvc.TableView);

соответствующий MyDvcController в основном выглядит так:

public partial class MyDvcController : DialogViewController
{
    public MyDvcController (UINavigationController nav): base (UITableViewStyle.Grouped, null)
    {

        navigation = nav;
        Root = new RootElement ("Demos"){
            new Section ("Element API"){
                new StringElement ("iPhone Settings Sample", DemoElementApi),

            }
        };
    }  
}

это позволило monotouch.dialog быть частью текущего стека навигационных контроллеров и получить автоматическую кнопку возврата с конусообразным видом ..yay

0 голосов
/ 13 февраля 2012

Вы также можете реализовать самостоятельно

dialogViewController.NavigationItem.RightBarButtonItem = new UIBarButtonItem("Back",UIBarButtonItemStyle.Bordered,delegate(object sender,EventArgs e) 
            {   

              NavigationController.DismissModalViewControllerAnimated(true);
            });
...