0

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

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


所以总结一下,这就是我们所拥有的:

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

在纵向模式下,我们有:

文件 1 >

文件 2 >

文件 3 >

在横向模式下,我们得到:

文件 1 >>

文件 2 >>

文件 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;
        }
    }
}
4

0 回答 0