2015-10-05 7 views
2

Я реализовал встроенные подборщики дат, аналогичные тому, как это реализовано в приложении Calendar, где вы нажимаете на UITableViewCell и расширяете следующую ячейку под ней, которая содержит UIDatePicker. Теперь у меня есть выбор даты в качестве последней строки в разделе, поэтому по умолчанию separatorInset не находится в 0 для строки над ней, потому что под ней есть еще одна скрытая ячейка. Поэтому мне нужно удалить вставку разделителя, установив ее на UIEdgeInsetsZero. Но вы также должны удалить layoutMargins для ячейки, которая была добавлена ​​в iOS 8, чтобы переместить разделительную линию в крайнее левое положение таблицы. После этого ячейка textLabel больше не выравнивается с текстовыми метками других ячеек - она ​​отображается слишком далеко слева.Выравнивание UITableViewCell textLabel после удаления separatorInset

Итак, как вы устанавливаете линию разделителя для начала в крайнем левом углу таблицы только для одной ячейки, одновременно сохраняя свою текстовую метку в соответствии с другими ячейками? Обратите внимание, что я использую стиль ячейки Right Detail.

self.endTimeCell.separatorInset = UIEdgeInsetsZero 
self.endTimeCell.layoutMargins = UIEdgeInsetsZero 

enter image description here

ответ

0

Одним из вариантов является удаление полей из всех клеток, так что все они совпадают с той одной конкретной ячейке вместо того, чтобы пытаться сделать что одна клетка совместились с другими. Это можно сделать, установив layoutMargins на всю таблицу до UIEdgeInsetsZero. Это может быть нежелательно, но оно выравнивает все ячейки.

self.tableView.layoutMargins = UIEdgeInsetsZero 
self.endTimeCell.separatorInset = UIEdgeInsetsZero 
self.endTimeCell.layoutMargins = UIEdgeInsetsZero