Приложение XCode TabBar - несколько просмотров? - PullRequest
0 голосов
/ 19 октября 2011

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

Я пытался найти пример этого, но xcode 4.2 (на ios5.0 или более ранней версии) не создает mainwindow.xib, поэтому мне пришлось искать способ создания этой программы следующим образом:

#import "AppDelegate.h"

#import "HomeViewController.h"
#import "ViewListViewController.h"
#import "ShareViewController.h"
#import "FriendsViewController.h"
#import "SettingsViewController.h"

@implementation AppDelegate

@synthesize window = _window;
@synthesize tabBarController = _tabBarController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *homeViewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
    UIViewController *viewListViewController = [[ViewListViewController alloc] initWithNibName:@"ViewListViewController" bundle:nil];
    UIViewController *shareViewController = [[ShareViewController alloc] initWithNibName:@"ShareViewController" bundle:nil];
    UIViewController *friendsViewController = [[FriendsViewController alloc] initWithNibName:@"FriendsViewController" bundle:nil];
    UIViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
    self.tabBarController = [[UITabBarController alloc] init];
    [self.tabBarController setDelegate:self];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:homeViewController, viewListViewController, shareViewController, friendsViewController, settingsViewController, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

Этот код в моем AppDelegate.m отлично работает, и я могу отлично переключаться между вкладками. Проблема, с которой я столкнулся, заключается в том, что я буду добавлять графику на страницы и использовать их в качестве кнопок для переключения между представлениями для добавления / редактирования / удаления данных из базы данных (отдельная проблема, которую мне придется научиться делать дальше).

Большинство примеров, которые я нашел, запускают приложение либо с tabBar, либо с помощью uiNavigation с UIViews для переключения между ними. Мне еще предстоит найти пример, который наглядно покажет, как делать то, что я ищу. Является ли мой подход неправильным для создания приложения tabBar в качестве базового шаблона для этого, или это можно сделать? Каждая вкладка может иметь несколько представлений, которые выполняют функции, но мне нужно иметь возможность создавать и переключаться между ними в рамках структуры tabBar.

спасибо заранее,

Серебряный тигр

- UPDATE: -

После прочтения теперь я думаю, что aUINavigationController - это не то, что я ищу. Мне нужен способ создания настраиваемой кнопки, позволяющей мне переключать представления, поскольку кнопки, которые я буду использовать в своем контенте, будут либо графическими, либо прозрачными поверх графического фона. Можно ли использовать пользовательские кнопки, чтобы выдвигать новые представления, при этом оставляя панель вкладок видимой всегда? Моя структура будет такой, как показано ниже

Home
  Add
  Edit
  delete

ViewList - Single page to view list

Share - Single page to send emails / invites

Friends
  Add
  Edit
  Delete

Settings - Single page for app settings/preferences

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

1 Ответ

1 голос
/ 19 октября 2011

Оба UINavigationController и UITabBarController являются контроллерами контроллеров представления. В этой функции они работают одинаково. Но есть некоторые различия. Используйте это как руководство:

UINavigationController: Здесь у вас обычно есть панель навигации вверху. Вы «помещаете» другие контроллеры представления в «стек», и навигационный контроллер заботится обо всех кнопках сверху, чтобы перемещаться назад и вперед, а также об анимациях и т. Д. Часто, но не всегда, это реализуется с помощью табличных представлений.

UITabBarController: Здесь у вас всегда есть панель вкладок внизу, так что это должно иметь смысл, только если есть вещи, к которым пользователь обычно имеет доступ, независимо от того, где он находится в иерархии представления. , Посмотрите на приложение Будильник для типичного примера.

Комбинация: Если вы хотите объединить два, вы начинаете с контроллера панели вкладок. Затем вы можете назначить отдельные контроллеры навигации одному или нескольким элементам панели вкладок. Контроллеры навигации, в свою очередь, управляют своими контроллерами представления. Убедитесь, что ваш пользовательский интерфейс не перегружен навигационными элементами управления вверху и внизу экрана. Посмотрите на приложение iTunes для типичного примера.

Кстати, вы всегда можете сделать так, чтобы эти элементы управления исчезли, если одному представлению требуется больше места (например, в приложении iPod панель вкладок заменяется панелью инструментов при переходе к «Сейчас играет»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...