我在自定义单元格中使用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;
}
}
}