UINavigationController и UITableView

#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?