使用monotouch更改DialogViewController TableView高度

时间:2013-07-29 07:14:35

标签: uitableview xamarin.ios frame dialogviewcontroller

有没有理由在DialogViewController LoadView方法上设置TableView.Frame似乎什么都没做?

目前为了克服这个问题,我为top和TableView.TableFooterView设置了底部边距的TableView.ContentInset,但这种方法的问题是滚动条不会在表边界的位置开始/结束,例如它会进入&# 34;下"底部的TabBar等。

有没有办法在DialogViewController中手动设置TableView框架,如果没有,为什么?

谢谢。

更新:我期望的示例代码应该可以正常工作,例如更改TableView框架? 注意:如果我在ViewDidAppear中设置Frame然后它可以工作,但我需要它在ViewDidLoad中工作。

using MonoTouch.Foundation;
using MonoTouch.UIKit;
using System.Drawing;
using MonoTouch.Dialog;

namespace Test
{
    [Register ("AppDelegate")]
    public partial class AppDelegate : UIApplicationDelegate
    {
        UIWindow window;
        public override bool FinishedLaunching (UIApplication app, NSDictionary options)
        {
            var vc = new MainViewController ();
            window = new UIWindow (UIScreen.MainScreen.Bounds);
            window.RootViewController = vc;
            window.MakeKeyAndVisible ();
            return true;
        }
    }

    [Register]
    public class MainViewController : DialogViewController
    {
        public MainViewController (): base (UITableViewStyle.Plain, new RootElement (""))
        {
            TableView.AutoresizingMask = UIViewAutoresizing.None;

            Section s = new Section ("Section 1");
            Root.Add (s);

            StringElement el = new StringElement ("Element 1");
            s.Add (el);

            el = new StringElement ("Element 2");
            s.Add (el);

            s = new Section ("Section 2");
            Root.Add (s);

            el = new StringElement ("Element 1");
            s.Add (el);

            el = new StringElement ("Element 2");
            s.Add (el);
        }

        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
            TableView.Frame = new RectangleF (0, 120, TableView.Frame.Width, TableView.Frame.Height - 120);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您是否尝试将AutoresizingMask的{​​{1}}属性设为TableView

如果这不起作用,请尝试检查UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight的{​​{1}},FrameContentSize属性。看起来ContentInset位于TableView下方,这就是为什么您无法一直滚动到TableView.Frame.Bottom的结尾。

您如何更改TabBar属性?例如,如果您想要更改TableView,则必须像这样更改整个TableView.Frame

Frame.X

而不是仅仅更改Frame

RectangleF frame = TableView.Frame
frame.X = 100;
TableView.Frame = frame;

答案 1 :(得分:1)

好的,我想我找到了问题的答案。

DialogViewController继承自UITableViewController,根据我的理解,你无法在UITableViewController中更改TableView框架。

为了实现这一点,DialogViewController需要从UIViewController继承,老实说不确定为什么不这样做。