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