1

我需要一种设置 Monotouch Dialogs RootElement 样式的方法。我需要更改背景和字体颜色。

我已经创建了一个自定义 RootElement 如下

public class ActivityRootElement : RootElement
{
    public ActivityRootElement (string caption) : base (caption)
    {

    }

    public ActivityRootElement(string caption, Func<RootElement, UIViewController> createOnSelected) : base (caption, createOnSelected)
    {
    }

    public ActivityRootElement(string caption, int section, int element) : base (caption, section, element)
    {
    }

    public ActivityRootElement(string caption, Group group) : base (caption, group)
    {
    }



    public override UITableViewCell GetCell (UITableView tv)
    {
        tv.BackgroundColor = Settings.RootBackgroundColour;
        return base.GetCell (tv);
    }

    protected override void PrepareDialogViewController(UIViewController dvc)
    {
        dvc.View.BackgroundColor =  Settings.RootBackgroundColour;
        base.PrepareDialogViewController(dvc);
    }

}

然后我调用自定义根元素,如下所示传入自定义 DialogController

    section.Add (new ActivityRootElement(activity.Name, (RootElement e) => {
                return new ActivityHistoryDialogViewController (e,true);
            }));

未应用根元素样式。任何帮助将不胜感激!!

4

2 回答 2

1

如果您希望颜色是您在 TableViewController 中看到的唯一内容,则需要将 BackgrounView 设置为 null。顶部有一个视图来应用样式,它将隐藏您正在寻找的颜色。

尝试这个:

public override UITableViewCell GetCell (UITableView tv)
{
    tv.BackgroundColor = Settings.RootBackgroundColour;
    tv.BackgroundView = null;
    return base.GetCell (tv);
}

protected override void PrepareDialogViewController(UIViewController dvc)
{
    dvc.TableView.BackgroundColor =  Settings.RootBackgroundColour;
    dvc.TableView.BackgroundView = null;
    base.PrepareDialogViewController(dvc);
}
于 2013-03-18T17:34:14.863 回答
0

为了让它工作,我必须重写该MakeViewController方法并将通常返回的 UIViewController 转换为 UITableViewController,然后进行编辑。

protected override UIViewController MakeViewController()
{
    var vc = (UITableViewController) base.MakeViewController();

    vc.TableView.BackgroundView = null;
    vc.View.BackgroundColor = UIColor.Red; //or whatever color you like
    return vc;
}
于 2013-05-19T22:02:12.100 回答