ПРОГРАММИРОВАНИЕ ПОД IPHONE, IPAD OBJECTIVE-C часть 2

Меняем стиль NavigationController

Мы уже узнали как работать с Top Bar и Bottom Bar, теперь пришло время разобраться с их стилями. Я предлагаю не создавать новый проект, а использовать код с примера Самая простая таблица (UITableView).

Я знаю два способа как это сделать. Первый — интерактивный. Перейдите в MainWindow.xib, выберите там Navigation Controller, откройте панель утелит и перейдите на вкладку инспектора атрибутов (мы это уже делали в предыдущем примере). Там вы увидите два поля, Top Bar и Bottom Bar. Изменяя значения в этих полях — вы меняете стиль каждой из панелей. Чтобы убрать с контроллера навигации какое-то из полей, установите ему значение None. Попробуйте поэкспериментировать с этими полями.

Здесь же у нас есть возможность изменить стиль Status Bar (выбрать тот, который подойдет под стиль Top Bar и Bottom Bar).

Второй способ — это программный. Чтобы все успешно работало убедитесь, что в полях Status BarTop Bar и Bottom Bar не установлено значение None. Затем я предлагаю чуть поправить код в методе viewDidLoad класса RootViewController.

<code data-result="[object Object]">- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"Bar Style";

    self.students = [NSArray arrayWithObjects:@"Default", @"BlackOpaque", @"BlackTranslucent", nil];
}</code>

 

Теперь наша таблица будет отображать возможные стили. Осталось лишь реализовать сам процесс выбора стиля. Для этого измените метод didSelectRowAtIndexPath:

<code data-result="[object Object]">- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
	switch (indexPath.row)
	{
		case 0:
		{
			[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
			self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
                        self.navigationController.toolbar.barStyle = UIBarStyleDefault;
			break;
		}
		case 1:
		{
			[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;
			self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;
                        self.navigationController.toolbar.barStyle = UIBarStyleBlackOpaque;
			break;
		}
		case 2:
		{
			[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;
			self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
                        self.navigationController.toolbar.barStyle = UIBarStyleBlackTranslucent;
			break;
		}
	}
}</code>

 

В этом методе мы устанавливаем стиль всех баров в зависимости от номера выбранной ячейки. Вот как это выглядит:

Исходный код этого проекта можно скачать здесь.