1

为什么在 DialogViewController LoadView 方法上设置 TableView.Frame 似乎没有任何作用?

目前为了克服这个问题,我将 TableView.ContentInset 设置为顶部,将 TableView.TableFooterView 设置为底部边距,但这种方法的问题是滚动条不会在表格边界所在的位置开始/结束,例如它将进入 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);
        }
    }
}
4

2 回答 2

1

您是否尝试将您的AutoresizingMask属性设置TableViewUIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight

如果这不起作用Frame,请ContentSize尝试检查. 看起来位于您的下方,这就是为什么您无法一直滚动到.ContentInsetTableViewTableView.Frame.BottomTabBarTableView

你是如何改变TableView.Frame财产的?例如,如果你想改变Frame.X,你必须Frame像这样改变整体:

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

而不是仅仅改变Frame.X

TableView.Frame.X = 100;
于 2013-07-30T08:51:19.653 回答
1

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

DialogViewController 继承自 UITableViewController,据我了解,您无法更改 UITableViewController 内的 TableView 框架。

为此,DialogViewController 需要从 UIViewController 继承,老实说不知道为什么不这样做。

于 2013-08-06T02:14:03.910 回答