iOS. Приемы программирования. Вандад Нахавандипур
Чтение книги онлайн.

Читать онлайн книгу iOS. Приемы программирования - Вандад Нахавандипур страница 42

СКАЧАТЬ панель в качестве навигационной кнопки UISwitch (см. раздел 1.2). Это будет выглядеть не очень красиво, но мы просто попробуем:

      – (void) switchIsChanged:(UISwitch *)paramSender{

      if ([paramSender isOn]){

      NSLog(@"Switch is on.");

      } else {

      NSLog(@"Switch is off.");

      }

      }

      – (void)viewDidLoad{

      [super viewDidLoad];

      self.view.backgroundColor = [UIColor whiteColor];

      self.title = @"First Controller";

      UISwitch *simpleSwitch = [[UISwitch alloc] init];

      simpleSwitch.on = YES;

      [simpleSwitch addTarget: self

      action:@selector(switchIsChanged:)

      forControlEvents: UIControlEventValueChanged];

      self.navigationItem.rightBarButtonItem =

      [[UIBarButtonItem alloc] initWithCustomView: simpleSwitch];

      }

      Вот что получается (рис. 1.40).

      Рис. 1.40. Переключатель, добавленный на навигационную панель

      На навигационной панели можно создавать очень и очень занятные кнопки. Просто взгляните, что делает Apple со стрелками, направленными вверх и вниз, расположенными в правом верхнем углу на рис. 1.36. А почему бы нам тоже так не сделать? Впечатление такое, как будто в кнопку встроен сегментированный элемент управления (см. раздел 1.8). Итак, нам нужно создать такой элемент управления с двумя сегментами, добавить его на навигационную кнопку и, наконец, поставить эту кнопку на навигационную панель. Начнем:

      – (void) segmentedControlTapped:(UISegmentedControl *)paramSender{

      switch (paramSender.selectedSegmentIndex){

      case 0:{

      NSLog(@"Up");

      break;

      }

      case 1:{

      NSLog(@"Down");

      break;

      }

      }

      }

      – (void)viewDidLoad{

      [super viewDidLoad];

      self.title = @"First Controller";

      NSArray *items = @[

      @"Up",

      @"Down"

      ];

      UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]

      initWithItems: items];

      segmentedControl.momentary = YES;

      [segmentedControl addTarget: self

      action:@selector(segmentedControlTapped:)

      forControlEvents: UIControlEventValueChanged];

      self.navigationItem.rightBarButtonItem =

      [[UIBarButtonItem alloc] initWithCustomView: segmentedControl];

      }

      На рис. 1.41 показано, что должно получиться в итоге.

      Рис. 1.41. Сегментированный элемент управления, встроенный в навигационную кнопку

      Элемент navigationItem любого контроллера вида имеет еще два замечательных метода:

      • setRightBarButtonItem: animated: – задает правую кнопку навигационной панели;

      • setLeftBarButtonItem: animated: – определяет левую кнопку навигационной панели.

      Оба метода позволяют указывать, хотите ли вы анимировать кнопку. Задайте значение YES для параметра animated, если анимация нужна:

      UIBarButtonItem *rightBarButton =

      [[UIBarButtonItem alloc] initWithCustomView: segmentedControl];

      [self.navigationItem setRightBarButtonItem: rightBarButtonanimated: YES];

      См. также

      Подраздел «Создание СКАЧАТЬ