1

Elements Pack(ここ)のMonotouchDialogでSimpleMultilineEntryElementを使用しています。

高さの設定に関係なく、この要素は引き続き「デフォルト」のテーブルセルの高さに表示されます。実際の編集可能な部分は変化しましたが、背景のセルの輪郭は変化しませんでした。多くのブラウジングは、SizingSourceを実装する必要があることを示しており、私はそれを実行しました。したがって、かなり脆弱な回避策を使用して、セルのサイズを選択的に変更できるようになりました。ルート要素でUnevenRowsプロパティを使用しても効果はありませんでした。インデックスが確実に返されていても、そのインデックスでセルを取得しようとすると、アプリが強制終了されました。

  • Multilineエントリ要素に定義した高さプロパティを使用する方法はありますか?

    システムを使用する; System.Drawingを使用します。MonoTouch.Dialogを使用します。MonoTouch.Foundationを使用します。MonoTouch.UIKitを使用する; ElementPackを使用します。System.Collections.Genericを使用します。

    namespace MyNameSpace {//既存のプロジェクトを編集するか、プロジェクトが存在しない場合は追加します

    パブリック部分クラスProjectEdit:DialogViewController {Project _p; UINavigationController _nc;

    public ProjectEdit (Project p, UINavigationController nc) : base(null, true)
    {
        _p = p;
        _nc = nc;
    
        if (_p == null)
        {
            _p = new Project();
            _p.InitialiseProjectDefaults();
        }
    
    }
    
    public override Source CreateSizingSource (bool unevenRows)
    {
        //if (unevenRows)
        {
            return new unevenSizingSource(this);
        }
    }
    
    public class unevenSizingSource : DialogViewController.SizingSource
    {
        public unevenSizingSource(DialogViewController vc) : base (vc)
        {
    
        }
    
        public override float GetHeightForRow (UITableView tableView, NSIndexPath indexPath)
        {
            // workaround to resize selectively
    
            // location
            if (indexPath.Section == 1 && indexPath.Row == 0)
            {
                return 200;
            }
            // description
            if (indexPath.Section == 2 && indexPath.Row == 0)
            {
                return 200;
            }
    
            return 200;
        }
    }
    
    public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();
    
    
    }
    
    public override void ViewWillAppear (bool animated)
    {
        base.ViewWillAppear (animated);
    
        // Client selection
        ClientListViewController cl = new ClientListViewController(_nc, _p);
    
        var basicDetailsSection = new Section("Client") {
            new StringElement(_p.ClientDisplayName, delegate { _nc.PushViewController(cl, true); })
            //new UIViewElement ("", new GapElement (), true)
        };
    
        var locationSection = new Section("Location") {
            new SimpleMultilineEntryElement ("", "This is the\n location.") { Editable = true, Height = 200,  } 
        };
    
        var descSection = new Section ("Job Description"){
            new SimpleMultilineEntryElement ("", "This is the\n description") { Editable = true, Height = 200 } 
        };
    
        Root = new RootElement ("Project Details") {
            basicDetailsSection, locationSection, descSection
        };
    
    }
    

    }

}

4

1 に答える 1

3

ビューが表示される前に、Root.UnevenRowsを設定する必要があります。コントローラの例-

using System;
using MonoTouch.Dialog;
using ElementPack;

namespace Test1
{
    public class Test2ViewController : DialogViewController
    {
        public Test2ViewController (): base(new RootElement("test"))
        {
            Root.UnevenRows = false;

            Root.Add (new Section () 
                      {
                        new SimpleMultilineEntryElement(string.Empty, "value")
                        {
                            Height = 150, Editable = true
                        },
                        new SimpleMultilineEntryElement(string.Empty, "value2")
                        {
                            Height = 250, Editable = true
                        }});
        }
    }
}
于 2013-01-10T07:42:55.070 に答える