我使用带有自定义单元格的 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;
}
}
}