как создать вкладку программно и добавить на нее кнопки - PullRequest
3 голосов
/ 11 июля 2010

Я хочу добавить кнопки на панель вкладок программно в моем представлении ...

У меня есть контроллер навигации, но он не позволяет мне добавлять эти .. Я хочу создать программно в моем представлении...

Ответы [ 2 ]

12 голосов
/ 11 июля 2010

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

Позиция Apple такова:

Вы используете контроллеры панели вкладок в ситуации, когда ваше приложение либо представлены разные типы данные или представляет те же данные в существенно разные способы.

Это не значит, что вы не можете делать что-то по-другому ... Главный вопрос, который у вас есть, заключается в том, что вы уже поместили Nav Controller в приложение и хотите программно создать контроллер панели вкладок. Поэтому я могу видеть это только потому, что вы не возражаете, если контроллер вкладок меняется каждый раз, когда вы меняете экраны в контроллере Nav. Некоторые приложения работают таким образом. Большинство нет.

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

Вот код, который я использую для создания настроек для одного из моих приложений:

// set up a local nav controller which we will reuse for each view controller
UINavigationController *localNavigationController;

// create tab bar controller and array to hold the view controllers
UITabBarController *tabBarController = [[UITabBarController alloc] init];

NSMutableArray *localControllersArray = [[NSMutableArray alloc] initWithCapacity:1];

// setup the first view controller (Root view controller)
RootViewController *myViewController;
myViewController = [[RootViewController alloc] initWithTabBar];

// create the nav controller and add the root view controller as its first view
localNavigationController = [[UINavigationController alloc] initWithRootViewController:myViewController];
localNavigationController.navigationBar.barStyle = UIBarStyleBlack;
localNavigationController.delegate = self;

[localControllersArray addObject:localNavigationController];

// release since we are done with this for now
[localNavigationController release];
[myViewController release];

tabBarController.viewControllers = localControllersArray;
tabBarController.moreNavigationController.navigationBar.barStyle = UIBarStyleBlack;  

tabBarController.delegate = self;
tabBarController.moreNavigationController.delegate = self;

// release the array because the tab bar controller now has it
[localControllersArray release];

self.tabBarController.selectedIndex = 0;

// add the tabBarController as a subview in the window
[window addSubview:tabBarController.view];

// need this last line to display the window (and tab bar controller)
[window makeKeyAndVisible];

Есть так много ситуаций, когда я чувствую, что проще сделать все программно.

Надеюсь, это поможет.

0 голосов
/ 11 июля 2010

Вы должны сохранить ссылку на контроллер панели вкладок. Например, вы можете оставить его в App Delegate ...

...