UITableView с контроллером панели вкладок

#objective-c #uitableview

#objective-c #uitableview

Вопрос:

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

В моей раскадровке у меня есть контроллер просмотра панели вкладок с элементами, и я помещаю в него tableview и ячейку tableview. (Я не уверен в этом. Должен ли я помещать их для отображения данных в tableview или я должен делать это программно?) Я получаю данные из базы данных (с этой стороны нет никаких проблем), но не могу связать данные в tableview.

Что не так в моем коде?

Мой код:

.h файл

      @interface CategoryTabController : UIViewController<UITableViewDataSource, UITableViewDelegate>
    {
        DatabaseProcess *databaseProcess;
        UITableView *categoryTableView;
        NSMutableArray *categoryTableArray;

    }

.m file

@implementation CategoryTabController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    databaseProcess = [[DatabaseProcess alloc]init];

    //Get Category data to array
    categoryTableArray = [[NSMutableArray alloc]initWithArray:[databaseProcess getAllActiveCategory]];


    categoryTableView = [[UITableView alloc]init];

    categoryTableView.delegate = self;
    categoryTableView.dataSource = self;

    [self.view addSubview: categoryTableView];


}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{    // Return the number of rows in the section.
    return categoryTableArray.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CategoryCell" forIndexPath:indexPath];

    cell.textLabel.text = [categoryTableArray objectAtIndex: indexPath.row];

    return cell;
}
  

Ответ №1:

Вы должны сделать categoryTableView свойством IBOutlet и подключить его к своей таблице в IB. Также вы должны установить «CategoryCell» в качестве идентификатора ячейки в IB на ‘dequeueReusableCellWithIdentifier’ для работы.