1

我无法弄清楚如何正确设计 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);

在这里我定义了我认为可以编辑导航项的透明根元素:

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;
}
}

我尝试了许多编辑方法,但都没有奏效。我也开始在 Monotouch Dialog 中编辑 Elements.cs,但这也对我没有太大帮助。

有人有建议吗?

非常感谢!

4

1 回答 1

0

我相信要更改导航的后退按钮,您必须隐藏默认的后退按钮,然后分配您自己的。(就在你推送新的视图控制器之前,我相信你的情况,它会在你推送语言屏幕之前)像这样:

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

希望这可以帮助!

于 2012-02-17T20:38:24.730 回答