Комментарий Джеймса П. решил это для меня.
Использование SCNSceneRendererDelegate
означает, что я могу запускать код несколько раз в каждом цикле рендеринга, чтобы проверить, прекратил ли узел движение.
Затем я столкнулся с этой проблемой SceneKit: isResting никогда не возвращает true . isResting всегда был ложным. Единственный способ получить то, что мне было нужно, это использовать Int(SCNNode.physicsBody?.velocity.z)
, и когда это ноль, мой узел полностью лежит на полу
.
Вы называете hidesBackButton = НЕ от потока? Все операции UI должны быть сделаны на основном потоке, иначе они не будут иметь никакого эффекта.
я не смог копировать Вашу проблему на своей машине. однако, я столкнулся с подобной проблемой с tableviews, даже когда я обновлял свой ui на основном потоке. но вызов setNeedsDisplay устранил ту проблему.
Можете Вы пробовать это и видеть, работает ли это:
[self.navigationController.navigationBar setNeedsDisplay];
Я предполагаю, что это должно работать, необходимо сделать то же, НО НА NAVIGATIONBAR вместо этого. сообщите мне, работало ли это - поскольку я не могу протестировать свое решение, потому что я никогда не получаю эту проблему :-)
Вы попытались вынудить представление обновиться путем вызова setNeedsDisplay? Возможно, ОС не берет изменения немедленно, и необходимо вызвать ее.
Имейте Вас, пытался использовать setHidesBackButton:animated: метод вместо этого? Возможно, это имеет немного отличающееся поведение.
В моем случае мне просто нужно было дать заголовок представлению, как в примере: self.navigationItem.title = @"Menu";
Marinus