2016-12-02 2 views
0

У меня есть UITableViewCell с встроенным UIStackView. Все работает и прекрасно выглядит на телефоне и iPad. Тем не менее, я получаю много странных ошибок в StoryBoard, и я не знаю, могу ли я игнорировать их или нет. Обычно я ненавижу игнорировать предупреждения. Но все в порядке? Моя ячейка таблицы устанавливаются следующим образом:Y Недостаток в вертикальном стеке

UITableViewCell 
- Content View 
-- View (named outerView) 
--- View (named dateView for top banner color) 
--- UIStackView (vertical, named mainStackView, pinned to neighbors) 
---- UIButton (A) 
---- UIView (B) 
---- UIStackView (C, horizontal) 
---- UIStackView (D, horizontal) 
---- UILabel (E) 
---- UIButton (F) 

Все под mainStackView (буквы A-F) показывает, что все ошибки в раскадровке, что они «нужны ограничения для: положения Y или высот». Однако в Apple documentation говорится, что они будут обрабатывать все ограничения и вертикальное выравнивание, если UIStackView имеет вертикальную ориентацию. Как я уже сказал, он работает отлично, и упорядоченные просмотры могут быть свернуты/скрыты, и никаких других предупреждений нет. Мне просто не нравится отсылать код, пронизанный предупреждениями. Что я могу сделать, чтобы исправить это, или это известная проблема?

ОБНОВЛЕНИЕ: вот MCVE, как указано в комментарии ниже. Нажмите here и разархивируйте папку, чтобы получить проект «Голые кости», который будет работать только в Interface Builder.

+0

Я не могу воспроизвести вашу проблему на основе того, что вы поделили с нами. Если мы не сможем воспроизвести вашу проблему, трудно решить проблему. Возможно, вы можете создать [MCVE] (http://stackoverflow.com/help/mcve), а именно начать с пустого проекта, а затем добавить таблицу и ячейку таблицы, которая воспроизводит предупреждение, которое вы описываете. Тогда вы можете поделиться этим проектом с нами. – Rob

+0

@Rob - я обновил его, включив MCVE –

+0

Получаете ли вы предупреждения о компиляции или предупреждения во время выполнения? В Xcode 8.1 (8B62) у меня нет предупреждений о компиляции. Когда я попытался запустить это, очевидно, что у вас не было контроллера вида или класса ячейки, но когда я добавил их, он работал нормально, хотя для предотвращения предупреждений во время выполнения я поместил следующие строки в 'viewDidLoad'' Подкласс UITableViewController: 'self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 222; '. – Rob

ответ

2

Способ, которым я решил это, был либо:
1. Удалите нижнее ограничение в представлении основного стека в нижней части SuperView, чтобы зафиксировать только 3 стороны.
или
2. Уменьшите высоту ячейки таблицы. Хотя это динамическая ячейка высоты, основанная на высоте надписи/кнопок, я думаю, она все еще должна быть «правильной» высотой в построителе интерфейса?

Мне пришлось использовать опцию 2, потому что, если бы я сделал вариант 1, моя ячейка таблицы исчезла, так как она не знала, как использовать высоту для ячейки. Также стоит повторить, что код по-прежнему работал нормально, у него просто были предупреждения о компиляции. Я понятия не имею, почему никто не мог их видеть, несмотря на то, что он был на одном уровне с xcode. Теперь прочь, чтобы попытаться получить мои 3 дня назад и работать над моим OCD о предупреждениях в коде.

1

У меня также была аналогичная проблема с вертикальным представлением стека. Способ, которым я решил это, задав ограничение высоты любому подзону (в моем случае горизонтальное представление стека) и удалив его во время сборки. Я также пробовал это на вашем MCVE, и это сработало.

Примечание: Это, безусловно, взлом, но он разрешил проблему.

Смежные вопросы