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

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

СКАЧАТЬ вкладок мы добавляем на эту панель навигационный контроллер или контроллер вида. Эти элементы будут отображаться как вкладки на панели. Контроллер панели вкладок содержит панель вкладок типа UITabBar. Мы не создаем этот объект вручную – мы создаем контроллер панели вкладок, а уже он создает для нас такой объект. Проще говоря, считайте, что мы инстанцируем контроллер панели вкладок, а потом задаем контроллеры видов для этой панели. Данные контроллеры видов будут относиться к типу UIViewController или UINavigationController, если мы собираемся создать по контроллеру для каждого элемента панели вкладки (они же – контроллеры видов, задаваемые для контроллера панели вкладок). Навигационные контроллеры относятся к типу UINavigationController и являются подклассами от UIViewController. Следовательно, навигационный контроллер – это контроллер вида, но контроллеры видов, относящиеся к типу UIViewController, не являются навигационными контроллерами.

      Итак, предположим, что у нас есть два контроллера видов. Классы этих контроллеров называются FirstViewController и SecondViewController:

      – (BOOL) application:(UIApplication *)application

      didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

      self.window = [[UIWindow alloc] initWithFrame:

      [[UIScreen mainScreen] bounds]];

      [self.window makeKeyAndVisible];

      FirstViewController *firstViewController = [[FirstViewController alloc]

      initWithNibName: nil

      bundle: NULL];

      SecondViewController *secondViewController = [[SecondViewController alloc]

      initWithNibName: nil

      bundle: NULL];

      UITabBarController *tabBarController = [[UITabBarController alloc] init];

      [tabBarController setViewControllers:@[firstViewController,

      secondViewController

      ]];

      self.window.rootViewController = tabBarController;

      return YES;

      }

      Когда панель вкладок отобразится на экране, ее элементы будут расположены именно так, как показано на рис. 1.38. Имя каждого из этих элементов основывается на названии того контроллера вида, который соответствует конкретному элементу. Определим заголовки для обоих контроллеров наших видов.

      Когда загружается панель вкладок, вместе с ней загружается контроллер вида первого входящего в нее элемента. Все остальные контроллеры видов инициализируются, но их виды не загружаются. Это означает, что любой код, который вы напишете во viewDidLoad второго контроллера вида, не выполнится до тех пор, пока пользователь не нажмет второй элемент этой панели в первый раз. Поэтому если вы присвоите заголовок панели контроллеру второго вида в его viewDidLoad и запустите приложение, то обнаружите, что заголовок панели вкладок по-прежнему пуст.

      Первый контроллер вида мы назовем First:

      #import "FirstViewController.h"

      @implementation FirstViewController

      – (id)initWithNibName:(NSString *)nibNameOrNil

      bundle:(NSBundle *)nibBundleOrNil{

      self = [super initWithNibName: nibNameOrNil

      bundle: nibBundleOrNil];

      if (self!= nil) {

      self.title = @"First";

      }

      return self;

      }

      – (void)viewDidLoad{

      [super viewDidLoad];

      self.view.backgroundColor = [UIColor whiteColor];

      }

      А второй контроллер СКАЧАТЬ