#iphone #objective-c #ipad
#iPhone #objective-c #iPad
Вопрос:
Я хотел бы создать представление, в котором есть панель навигации сверху и uitableview в качестве содержимого и панель uitabbar внизу. Я хотел бы создать все это программно, без необходимости использовать xib .. как мне это сделать??
Пока у меня есть:
@interface GroupViewController : UINavigationController <UITableViewDelegate, UITableViewDataSource>{
UITableView * table;
UITabBar * bar;
}
@property (nonatomic, retain) UITableView * table;
@property (nonatomic, retain) UITabBar * bar;
@end
При нажатии на UITabBarItem появится всплывающее окно (без переключения вида, потому что если это так, то мне понадобится UITabBarViewController).
Одна из моих проблем также заключается в том, где мне указать местоположение UITabBar в этом общем представлении? В UIViewDidLoad?
Ответ №1:
Вам нужно начать с приложения на основе просмотра. А затем создайте UITabBarController в вашем файле AppDelegate.
Appdelegate.h
UITabBarController *tabBarController;
// set properties
Appdelegate.m
// Synthsize
tabBarController = [[UITabBarController alloc] init];
tabBarController.delegate=self;
//Adding Search,Nearby,Map,AboutUs,Favorites Tabs to tabBarController
Search * search = [[Search alloc] init];
UINavigationController *searchNav = [[UINavigationController alloc] initWithRootViewController:search];
Nearby* nearby = [[Nearby alloc] init];
UINavigationController *nearbyNav = [[UINavigationController alloc] initWithRootViewController:nearby];
Map* map = [[Map alloc] init];
UINavigationController *mapNav = [[UINavigationController alloc] initWithRootViewController:map];
AboutUs* aboutUs = [[AboutUs alloc] init];
UINavigationController *aboutUsNav = [[UINavigationController alloc] initWithRootViewController:aboutUs];
Favorites* favorites = [[Favorites alloc] init];
UINavigationController *favoritesNav = [[UINavigationController alloc] initWithRootViewController:favorites];
NSArray* controllers = [NSArray arrayWithObjects:searchNav,nearbyNav,mapNav,aboutUsNav,favoritesNav, nil];
TabBarController.ViewControllers = контроллеры;
[window addSubview:tabBarController.view];
Вы можете соответствующим образом управлять тем, на какой вкладке вы хотите разместить навигационный контроллер или только контроллер просмотра.
Затем в каждом из упомянутых выше контроллеров просмотра вам необходимо реализовать
- (id)init {}
в котором вы можете задать название вкладки и изображение.
Комментарии:
1. вы неправильно поняли мой вопрос … как я уже сказал, когда я нажимаю на UITabBarItem, он НЕ загружает новое представление.. просто всплывающее окно .. нужен ли мне UITabBarController по-прежнему? Т.е. UITableView постоянно присутствует независимо от того, какой UITabBarItem вы нажимаете
2. ДА. Вам нужно запустить свое приложение с помощью UITabBarController. Я не знаю, почему ваш элемент панели вкладок не отображает то, что вы хотите. Для этого мне нужно увидеть больше вашего кода. Но просто попробуйте реализовать это таким образом.
Ответ №2:
Создайте все элементы (панель навигации, uitableview, панель вкладок) методом loadview.
Комментарии:
1. Я должен выделить в loadview?