有没有理由在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);
}
}
}
答案 0 :(得分:1)
您是否尝试将AutoresizingMask
的{{1}}属性设为TableView
?
如果这不起作用,请尝试检查UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
的{{1}},Frame
和ContentSize
属性。看起来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继承,老实说不确定为什么不这样做。