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

toのAutoresizingMaskプロパティを設定しようとしましたか?TableViewUIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight

これが機能しない場合は、 のFrameContentSizeおよびContentInsetプロパティを調べてみてくださいTableViewTableView.Frame.Bottomが の下にあるように見えるTabBarため、 の最後までスクロールできませんTableView

どのように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 に答える