Вы можете сохранить только один экземпляр UITableView
и использовать выбор полосы вкладок, чтобы решить, какой источник данных использовать для него. Вот рабочий пример, с настройкой контроллера представления в раскадровке, чтобы содержать панель вкладок и одно представление таблицы.
#import "ViewController.h"
@interface ViewController() <UITableViewDataSource, UITabBarDelegate>
@property(weak,nonatomic) IBOutlet UITableView *tableView;
@property(weak,nonatomic) IBOutlet UITabBar *tabBar;
@property(strong,nonatomic) NSArray *model;
@end
Наша модель представляет собой три массива, по одному для каждой вкладки в панели вкладок. Эти массивы жестко закодировать инициализируются здесь, но может также быть инициализированы с помощью веб-службы ...
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *dataSource0 = @[ @"A", @"B", @"C" ];
NSArray *dataSource1 = @[ @"1", @"2", @"3"];
NSArray *dataSource2 = @[ @"doh", @"ray", @"me"];
self.model = @[ dataSource0, dataSource1, dataSource2 ];
self.tabBar.selectedItem = self.tabBar.items[0];
}
// the user pressed a tab, reload the table
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
[self.tableView reloadData];
}
// this is an important part: our data for the table is determined by
// which tab is selected, return of the arrays, corresponding to the selection
- (NSArray *)currentDataSource {
UITabBarItem *item = self.tabBar.selectedItem;
NSInteger index = [self.tabBar.items indexOfObject:item];
return self.model[index];
}
// these datasource methods always refer to the currentDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self currentDataSource].count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
NSString *text = [self currentDataSource][indexPath.row];
cell.textLabel.text = text;
return cell;
}
@end
@VladHatko Ну, честно говоря, вы можете использовать один и тот же вид таблицы и просто загрузить два набора данных внутрь. – JAL
@Rohit palod Если вы создаете несколько tableView, вы должны учитывать, что память более одного, используйте один tableView, вы можете загружать несколько источников данных при переключении элемента. использование нескольких табличных представлений не рекомендуется, но вы также можете установить isHidden, чтобы перенаправить ваше требование. – aircraft
TableView - элементы интерфейса. Вы используете 'UITableViewDataSource' для предоставления данных и настройки для таблицы. Если оба экрана одинаково похожи на данные, используемые табличным представлением, вы должны использовать одну таблицу и манипулировать используемыми ею данными. – Connor