iphone - использование Tabbar - PullRequest
       5

iphone - использование Tabbar

0 голосов
/ 31 октября 2011

Привет всем,

Я пытаюсь использовать элемент управления tabbar в моем приложении для iphone, у меня есть несколько вопросов относительно элемента управления.

  1. Если я создаю шаблон проекта панели вкладок, в моем делегате приложения он загружает все 5 контроллеров вкладок во время запуска приложения, не вызовет ли это неэффективность использования памяти?

  2. Могу ли я на самом деле перетащить элемент управления панели вкладок на каждый из моих экранов и вручную переключаться между экранами с помощью методов [self presentViewController ..] и [self dismissModalViewControllerAnimated ...]?

  3. Как наиболее эффективно использовать панель вкладок в приложении для iphone?

Заранее спасибо!

:)

Ответы [ 2 ]

0 голосов
/ 31 октября 2011

Несмотря на то, что я не уверен, что означает «самый эффективный» в вашем контексте, я попытаюсь объяснить 3. объяснением того, что я обычно делаю, когда речь идет о типичных приложениях с вкладками:

Я не пойду с примером проекта, потому что во всем этом IB есть так много магии (и у меня был трудный опыт в попытке объединить контроллеры панели вкладок и контроллеры навигации).

Я просто создал простой проект, избавился от всего, что связано с IB, и сделал что-то подобное в делегате приложения:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{    
  NSMutableArray *cons = [[NSMutableArray alloc ]init];

  viewController = [[UITabBarController alloc] init]; 
  int i = 0;

  UIViewController *firstController = [[SomeViewViewControllerClazz alloc] init];
  firstController = [[UITabBarItem alloc]initWithTitle:@"Een" image:nil tag:i];
  [cons addObject:firstController];
  [firstController release];
  i++;


  UIViewController *secondController = [[AnotherViewControllerClazz alloc] init];
  secondController = [[UITabBarItem alloc]initWithTitle:@"Twej" image:nil tag:i];
  [cons addObject:secondController];
  [secondController release];
  i++;


  UIViewController *thirdController = [[WhateverViewControllerClazz alloc] init];
  thirdController = [[UITabBarItem alloc]initWithTitle:@"Drej" image:nil tag:i];
  [cons addObject:thirdController];
  [thirdController release];
  i++;

  viewController.viewControllers = cons;
  [window addSubview:viewController.view];
  [window makeKeyAndVisible];

   return YES;
}

Таким образом, я имею максимальную свободу делать все, что захочу с контроллерами, но также обладаю встроенной мощью вкладок.

1 .: Таким образом, у меня никогда не было проблем с памятью, хотя я загружал контроллеры в самом начале. 2 .: Если идея с вкладками подходит вашему приложению, используйте ее, как это предусмотрено в iOs.

0 голосов
/ 31 октября 2011

Ответ на ваши вопросы:

  1. Нет, это не приведет к неэффективности использования памяти. Но вы должны отпустить контроллер панели вкладок

  2. Вы можете сделать это, но это не очень хорошая практика, и когда вы звоните presentedViewController вкладка исчезнет (извините за неуместный термин).

  3. Самый эффективный способ использования панели вкладок в приложении для iphone - взять контроллер панели вкладок и добавить это представление tabBar.
...