Monotouch 5.2.11 iOS の使用
このチュートリアル ( http://tirania.org/monomac/archive/2011/Jan-18.html ) に従い、画像を含むカスタム セルを作成し、IElementSizing インターフェイスも追加しました。GetHeight が呼び出されることはありません。
同様の質問が寄せられており、一般的に受け入れられている解決策は、最初に RootElements を作成して確認し、コントローラーに追加する前に UnEvenRows=true を設定することでした。これはうまくいきませんでした。私はそれと、ルート要素にセクションを追加する他のすべての組み合わせを試しましたが、GetHeight が起動されるのを見たことがありません。
MyDataElement は 320x200 の画像で、問題なく表示されますが、その後にある文字列要素は表示されません (背後にあると仮定します)。その結果、カスタム セルを一番上にドラッグすると、消えて再表示され、2 番目の文字列要素がその上に表示されます。
これが私が試したコードです:
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);
}