使用Monotouch 5.2.11 iOS
我已经按照本教程(http://tirania.org/monomac/archive/2011/Jan-18.html),使用图像创建了一个自定义单元格,并且还添加了IElementSizing接口。永远不会调用GetHeight。
已经提出了类似的问题,普遍接受的解决方案是首先确保并创建RootElements,在将它们添加到Controller之前设置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);
}
答案 0 :(得分:0)
经过大量的试验和错误,我必须确保并删除我从github下载的Monotouch.Dialog的引用并使用内置引用。似乎gheub可能会破坏getheight。