Monotouch Dialog Datepicker и RadioGroup Navigationitem

Я не могу понять, как правильно спроектировать нажатый элемент навигации viewcontrollers для RadioGroup.

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

Я строю так:

var rootSettings = new RootElement ("Settings");
            var sectionNotificationSettings = new Section ("Notification settings");  

            BooleanElement pushEnabled = new BooleanElement("Push notifications", settings.PushEnabled);
            sectionNotificationSettings.Add(pushEnabled);  

            var sectionCountrySettings = new Section("Country settings");
            var rootRadioGroup = new TransparentRootElement ("Language", new RadioGroup("languages", 0));

            var sectionRadioElements = new Section("");

            foreach(var language in settings.Languages)
            {
                RadioElement selectableLanguage = new RadioElement(language.Key, "languages");
                sectionRadioElements.Add(selectableLanguage);
            }

            rootRadioGroup.Add(sectionRadioElements);

            sectionCountrySettings.Add(rootRadioGroup);

            rootSettings.Add (sectionNotificationSettings);
            rootSettings.Add(sectionCountrySettings);

И здесь я определяю TransparentRootElement, где я думал, что могу редактировать элемент навигации:

public class TransparentRootElement : RootElement {

public TransparentRootElement (string caption) : base (caption)
{

}

public TransparentRootElement (string caption, Group radioGroup ) : base (caption, radioGroup)
{

}

public override void Selected (DialogViewController dvc, UITableView tableView, NSIndexPath path)
{       
    base.Selected (dvc, tableView, path, true);
}

void HandleMenuButtonTouchUpInside (object sender, EventArgs e)
{
    _dvc.NavigationController.PopViewControllerAnimated(true);
}

public override UITableViewCell GetCell (UITableView tv)
{
    var cell = base.GetCell (tv);
    //cell.BackgroundColor = UIColor.White;

    return cell;
}
}

Я пробовал много подходов к редактированию, но ни один из них не работал. Я также начал редактировать Elements.cs в Monotouch Dialog, но это тоже мне не очень помогло.

Кто-нибудь, у кого есть предложение?

Большое спасибо!


person Henning Schulz    schedule 16.02.2012    source источник


Ответы (1)


Я считаю, что для изменения кнопки «Назад» навигации вам нужно скрыть кнопку «Назад» по умолчанию, а затем назначить свою собственную. (Прямо перед тем, как вы нажмете новый контроллер представления, я полагаю, что в вашем случае это будет до того, как вы нажмете экран «Язык») Что-то вроде этого:

toPushscreen.NavigationItem.SetHidesBackButton(true, true);
toPushscreen.NavigationItem.LeftBarButtonItem = new UIBarButtonItem("Back", UIBarButtonItemStyle.Plain, myHandler);
currentScreen.NavigationController.PushViewController(toPushscreen, true);

Надеюсь это поможет!

person TChadwick    schedule 17.02.2012
comment
Привет, TChadwick, я не сам нажимаю на языковой экран. Это делается через моносенсорный диалог. Я просто добавляю новый RootElement с Radiogroup и разделами, которые автоматически загружаются, если я нажимаю на корневой элемент группы. Внутри MonTouchDialog использует механизмы push, которые я нашел в elements.cs, но я не хотел бы менять их там. - person Henning Schulz; 20.02.2012
comment
Спасибо за разъяснение, у меня еще не было опыта использования моносенсорного диалога, однако я хотел бы проверить, используете ли вы версию моносенсорного диалога, которая пришла с последним обновлением моносенсорного экрана, и если да, вы можете попробовать переход на последнюю версию на github, или, если вы используете версию github, вы можете переключиться на встроенную версию, поставляемую с последней сборкой monotouch. Всего несколько идей... - person TChadwick; 13.03.2012