2016-09-19 4 views
0

У меня есть в моем приложении к UINavigationController и я добавил, сегментированный контроль:Почему я не могу установить заголовок моего UINavigationController в Swift?

enter image description here

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

я могу скрыть сегментированный управления, выполнив:

segmentedControl.hidden = true 

и он работает, но когда я пишу в коде:

self.title = "test" 

то тест слово не появляется. В чем проблема и как я могу это исправить?

ответ

2

Если вы уже установили titleView из navigationItem и пытается установить title, то вам необходимо сначала установить titleView, как nil только тогда он будет отображать название на NavigationBar.

self.navigationItem.titleView = nil 
self.navigationItem.title = "Test" 

Edit: Чтобы получить экземпляр SegmentedControl обратно вам нужно сначала сохранить экземпляр из titleView как это.

self.segmentedControl = self.navigationItem.titleView as! UISegmentedControl 
self.navigationItem.titleView = UIView() //Set blank view so it will not nil the object of SegmentedControl 
self.navigationItem.titleView = nil 
self.navigationItem.title = "Test" 
+0

Можете ли вы рассказать мне, как вернуться к сегментированному контролю, отображаемому там? Я попытался с помощью 'self.navigationItem.titleView = mySegmentedControl', но он не появился, и слово' test' все еще видно ... – user3766930

+1

Для этого вам нужно сохранить экземпляр segmentedcontrol, прежде чем устанавливать его в nil. –

+0

hm Можете ли вы дать мне более глубокое понимание этого? это звучит разумно, но я не знаю, как это сделать в Swift :( – user3766930

0

Я считаю, что вам нужно использовать

self.navigationItem.title = "test" 

Я только что сделал тест, и он работал на меня.

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