В моем приложении есть 2 экрана:
-
TableViewVC (здесь нет представлений стека)
-
DetailVC (все вложенные представления стека здесь, см. ссылку на картинку: Изображение вложенных стоп-кадров). Обратите внимание: есть ярлыки и изображения в этих представлениях стека.
Когда вы нажимаете ячейку в представлении таблицы, она передает информацию из TableViewVC в DetailVC. Проблема заключается в том, что скрывает определенные UIStackViews в DetailVC. Я хочу, чтобы только 2 представления стека из разных в DetailVC были скрыты, как только загрузится представление. Поэтому я пишу этот код в DetailVC, чтобы выполнить это:
override func viewDidLoad() {
super.viewDidLoad()
self.nameLabel.text = "John"
self.summaryStackView.hidden = true
self.combinedStackView.hidden = true
}
Все выглядит великолепно, но Xcode дает много предупреждений только в время исполнения. Когда приложение не работает, никаких предупреждений в раскадровке нет. См. Ссылку на изображение ошибок: Изображение ошибок
В основном это много UISV-скрытия, UISV-интервал, ошибки UISV-canvas-connection. Эти ошибки исчезают, если я скрываю те же представления стека в viewDidAppear
, но затем появляется флеш материала, который должен был быть скрыт, а затем он скрывается. Пользователь видит краткий обзор, а затем скрывает, что не очень хорошо.
Извините за то, что вы не можете отправлять фотографии, а не ссылки, но не можете этого сделать.
Любые предложения по устранению этого? Это приложение, которое я действительно хочу запустить в магазин приложений - это мое первое, поэтому любая помощь будет замечательной!
Изменить/Обновить 1:
Я нашел небольшую работу с этим кодом, который я разместил во втором экране с именем DetailVC:
// Function I use to delay hiding of views
func delay(delay: Double, closure: ()->()) {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
}
// Hide the 2 stack views after 0.0001 seconds of screen loading
override func awakeFromNib() {
delay(0.001) { () -> () in
self.summaryStackView.hidden = true
self.combinedStackView.hidden = true
}
}
// Update view screen elements after 0.1 seconds in viewWillAppear
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
delay(0.1) { () -> () in
self.nameLabel.text = "John"
}
}
Это полностью избавляет от предупреждений о ограничениях макета из Xcode.
Это все еще не идеально, потому что иногда я вижу проблеск представлений, которые должны быть скрыты - они мгновенно вспыхивают на экране, а затем исчезают. Это происходит так быстро, хотя.
Любые предложения относительно того, почему это избавляет от предупреждений? Кроме того, любые предложения о том, как улучшить это, чтобы работать отлично??? Спасибо!