2015-09-18 4 views
1

Есть ли общий шаблон для изменения содержимого навигационной панели без изменения содержимого UITableView, положения прокрутки, других элементов и т. Д.?Содержание элементов навигационной панели Changining без влияния на содержимое просмотров

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

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

Другой способ - попробовать сделать это на одной сцене. Я попытался разместить текстовое поле на панели заголовка навигационной панели. В этом случае текстовое поле заменяет метку панели навигации и не позволяет отображать ее, даже если текстовое поле скрывается.

iOS 8-9 + Swift Спасибо!

ответ

0

Вы можете установить titleview навигационного элемента вашего контроллера к требуемому виду

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    let titleView : UIView = UIView(frame: CGRectMake(0.0, 0.0, 40.0, 64.0)) 
    let titleLabel : UILabel = UILabel (frame: CGRectMake(0.0, 0.0, 40.0, 34.0)) 
    titleLabel.text = "title" 
    let button : UIButton = UIButton(frame: CGRectMake(0.0, 44.0, 40.0, 20.0)) 

    titleView.addSubview(titleLabel) 
    titleView .addSubview(button) 
    self.navigationItem.titleView = titleView 
} 
+0

Спасибо за ответ! Именно это я и сделал. Hardcoding все еще имеет несколько «но», включая добавление ручных ограничений и т. Д. Я ищу, скажем, решение Apple-Way (возможно, создание массива классов навигационных панелей и переключение между ними), которые приносят пользу от дизайна раскадровки и автоматической компоновки избегать возможных будущих проблем. –