2015-12-21 4 views
0

Этот код вызывается внутри функции, которая называется программно. UITableView, который он вставил, был помещен в UIViewController в раскадровку. UIViewController встроен в navigationController.Добавление Subview в UIViewController делает UITablview Subview Disappear

let containerView = UIView() 
    containerView.frame.size.width = self.view.frame.width/2 
    containerView.frame.size.height = self.view.frame.width/2 
    let blurEffect = UIBlurEffect(style: .Dark) 
    let blurEffectView = UIVisualEffectView(effect: blurEffect) 
    blurEffectView.frame = containerView.bounds 
    containerView.center = self.view.center 
    containerView.addSubview(blurEffectView) 
    self.view.insertSubview(containerView, aboveSubview: matchTableView) 
    indicator?.startAnimation() 

Я просто пытаюсь добавить индикатор активности над табличным представлением. Фактический индикатор активности отображается просто отлично, но мне нужно поставить фон за ним, чтобы его можно было увидеть правильно. Как только какой-либо тип subview добавляется в UIViewController, таблица исчезает.

+0

Вы пытаетесь использовать этот контейнерView в качестве фона для своего индикатора активности? – Shripada

+0

Правильно, это именно то, что я пытаюсь сделать. –

+0

В этом случае вы получаете все эти функции в одном представлении, скажем, ProgressView, и пусть он позаботится о всех необходимых функциях для отображения активности. В вашей текущей реализации это похоже на то, что вы, как правило, создаете несколько видов в разных местах и ​​пытаетесь упорядочить их вместе, и т. Д. – Shripada

ответ

0

Раньше я был добавляющим подвид в функции вскоре после представления оказал себя. Чтобы сделать это, нужно добавить вид в viewDidAppear. После этого я мог бы манипулировать им так, как мне было нужно. Любой период после viewDidAppear в жизненном цикле и tableView исчезает. Я не знаю, почему, или если это правильный способ избежать этой проблемы, но это работает как решение.

Добавление его в viewDidLoad не добавляет его в дерево рендеринга. Он будет там, но будет слишком рано, чтобы он отображался правильно.

0

Вы пробовали:

let containerView = UIView() 
... 
containerView.opaque = false 
containerView.backgroundColor = UIColor.clearColor() 
+0

Мне нужен containerView чтобы иметь фоновый цвет, и даже это не работает. TableView полностью исчезает, как только subview добавляется к себе или к viewController. –

0

Tableview исчезает, потому что вы вставляете вид контейнера над ним.

Вы nedd добавить свою активность ИКФПА над табличным, где активностью вид индикатора кадр меньше, чем вид таблицы кадр

matchTableView.addSubView(containerView) 
+0

TableView исчезает всякий раз, когда представление добавляется либо к себе, либо к viewController. –

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