1

使用 Monotouch 5.2.11 iOS

我遵循了本教程(http://tirania.org/monomac/archive/2011/Jan-18.html),创建了一个带有图像的自定义单元格,还添加了 IElementSizing 接口。永远不会调用 GetHeight。

已经提出了类似的问题,并且普遍接受的解决方案是确保并首先创建 RootElements,在将它们添加到控制器之前设置 UnEvenRows=true。这没有用。我已经尝试过这一点以及将部分添加到根元素的所有其他组合,但从未见过 GetHeight 被触发。

MyDataElement 是一个 320x200 的图像,它显示得很好,但它后面的字符串元素没有显示(假设它在它后面)。因此,如果我将自定义单元格拖到顶部上方,它会消失、重新出现,并且第二个字符串元素会显示在其顶部。

这是我尝试过的代码:

public class MyDataElement : Element, IElementSizing {
 static NSString key = new NSString ("myDataElement");
 public MyData MyData;

 public MyDataElement (MyData myData) : base (null)
 {
      MyData = myData;
 }

public  float GetHeight (UITableView tableView, NSIndexPath indexPath){
    return  200f;   // break point here is never hit ever   
 }

public override UITableViewCell GetCell (UITableView tv)
 {
      var cell = tv.DequeueReusableCell (key) as MyDataCell;
      if (cell == null)
           cell = new MyDataCell (MyData, key);
      else
           cell.UpdateCell (MyData);

      return cell;
 }

public partial class TableTester : DialogViewController
{


    public TableTester () : base (UITableViewStyle.Grouped, null)
    {


    var re = new RootElement("Sample") { 
            new Section("Testy") {
                new MyDataElement(new MyData() { stuff="hello"}),
                new StringElement("Sample")
            }
        };
        re.UnevenRows = true;


        this.Root = re;

        //this.Root = root;
    }

}

除此之外,我什至做了这个也没有用:

public class TestNavigator : UINavigationController {

    public TestNavigator() {

        TabBarItem = new UITabBarItem("Test", null, 1);

        var re = new RootElement("Sample") { 
            new Section("Sammy") {

                new StringElement("Sample"),
                new MyDataElement(new MyData() { stuff="sam"}),
                new StringElement("Sample 2")
            }
        };
        re.UnevenRows = true;
        var dv = new DialogViewController(re);
        re.UnevenRows = true;

        PushViewController(dv, true);

    }
4

1 回答 1

0

经过大量的试验和错误,我必须确保并删除我从 github 下载的对 Monotouch.Dialog 的引用,并使用内置的引用。似乎 getheight 可能在 github 中损坏了。

于 2012-05-07T20:17:32.473 回答