UITableView配件显示两次

时间:2013-10-02 06:51:07

标签: c# ios xamarin.ios

我在自定义单元格中使用UITableView。每个单元都将附件设置为DisclosureIndicator。 当我处于肖像模式时,它很好。当我旋转并进入横向模式时,附件在那里两次:在纵向位置和横向位置。 我还检查了单元格子视图,当我在横向时,配件的UIButton是两次。

还有其他人遇到过这个问题吗?有什么想法来解决它吗?


总而言之,这就是我们所拥有的:

具有数据源并使用一些自定义单元格的UITableView。这些单元格做得不多,只包含显示文档名称的UILabel。

在纵向模式中,我们有:

Document 1           >

Document 2           >

Document 3           >

在lanscape模式下,我们得到:

Document 1           >           >

Document 2           >           >

Document 3           >           >

我们的表格来源(请注意这是C#):

public class DocumentTableSource : MvxSimpleTableViewSource
{
    public DocumentTableSource(UITableView tableView) : base(tableView, typeof(DocumentTableCell), null)
    {
    }

    public override float GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
    {
        return DocumentTableCell.GetCellHeight();
    }
}

我们的自定义单元格(请注意这是C#):

[Register("DocumentTableCell")]
public class DocumentTableCell : MvxTableViewCell
{
    public const int CELL_HEIGHT = 44;
    public static NSString Key = new NSString("DocumentTableCell");
    private bool initialized;
    private UILabel lblDoc;

    public DocumentTableCell(IntPtr handle) : base(handle)
    {
        Accessory = UITableViewCellAccessory.DisclosureIndicator;
        lblDoc = new UILabel() {TextColor = AppearanceSettings.ColorDefault};
        this.DelayBind(() =>
        {
            var set = this.CreateBindingSet<DocumentTableCell, Document>();
            set.Bind(lblDoc).To(p => p.Name);
            set.Apply();
        });
    }

    public static float GetCellHeight()
    {
        return CELL_HEIGHT;
    }

    public override void UpdateConstraints()
    {
        base.UpdateConstraints();

        if (!initialized)
        {
            ContentView.AddSubview(lblDoc);
            ContentView.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();

            ContentView.AddConstraints(
                lblDoc.AtBottomOf(ContentView, 6),
                lblDoc.AtLeftOf(ContentView, AppearanceSettings.HORIZONTAL_MARGIN)
            );
            initialized = true;
        }
    }
}

0 个答案:

没有答案