Разделите UITableView на разделы с Objective-C в Xcode11 - PullRequest
0 голосов
/ 07 октября 2019

Я новичок в разработке под iOS Xcode 11 с Objective-C, поэтому, пожалуйста, потерпите меня.

Моя цель - создать две страницы, где на первой странице есть одна кнопка , которая после нажатия выводит на вторую страницу. На второй странице у меня есть простой список с некоторыми данными.

Я пытаюсь разделить это TableView на разделы. Пока что я создал кнопку и могу «переходить» с одной страницы на другую с помощью Segue. Но возникли проблемы с заполнением списка данными. Я пытаюсь сделать именно эту страницу:
Correct Output

Бу вместо этого я получаю список без каких-либо данных:
Error output

Это мой main.storyboard:
Page structure

Для второго просмотра я создал новый класс SecondControllerView.m и прикрепил этот классна вторую страницу
attaching class to the View

  //SecondControllerView.m  
#import "SecondViewController.h"

@interface SecondViewController (){
NSMutableArray *numArray;
NSMutableArray *numArray1;
NSMutableArray *numArray2;
NSMutableArray *numArray3;
NSMutableArray *numArray4;
NSMutableArray *numArray5;
NSMutableArray *numArray6;
NSMutableArray *numArray7;

NSMutableArray * sectionArray;
}
@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    numArray = [NSMutableArray arrayWithObjects:@"unit 1",@"unit 2",@"unit 3",@"unit 4",nil];
    numArray1 = [NSMutableArray arrayWithObjects:@"unit 1",@"unit 2",@"unit 3",@"unit 4",nil];
    numArray2 = [NSMutableArray arrayWithObjects:@"unit 1",@"unit 2",@"unit 3",@"unit 4",nil];
    numArray3 = [NSMutableArray arrayWithObjects:@"unit 1",@"unit 2",@"unit 3",@"unit 4",nil];
    numArray4 = [NSMutableArray arrayWithObjects:@"unit 1",@"unit 2",@"unit 3",@"unit 4",nil];
    numArray5 = [NSMutableArray arrayWithObjects:@"unit 1",@"unit 2",@"unit 3",@"unit 4",nil];
    numArray6 = [NSMutableArray arrayWithObjects:@"unit 1",@"unit 2",@"unit 3",@"unit 4",nil];
    numArray7 = [NSMutableArray arrayWithObjects:@"unit 1",@"unit 2",@"unit 3",@"unit 4",nil];

    sectionArray = [NSMutableArray arrayWithObjects:@"tour 1",@"tour 2",@"tour 3",@"tour 4",@"tour 5",@"tour 6",@"tour 7",@"tour 8",nil];
    NSLog(@"Hello world");
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return sectionArray.count;
}

-(NSString * )tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return sectionArray[section];
}

-(NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    int count = 0;
    if(section == 0){
        return numArray.count;
    }else if (section == 1){
        return numArray1.count;
    }else if (section == 2){
        return numArray2.count;
    }else if(section == 3){
        return numArray3.count;
    }else if(section == 4){
        return numArray4.count;
    }else if(section == 5){
        return numArray5.count;
    }else if(section == 6){
        return numArray6.count;
    }else if(section == 7){
        return numArray7.count;
    }
    return count;
}

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

    if(indexPath.section == 0){
        cell.textLabel.text = numArray[indexPath.row];
    }else if(indexPath.section == 1){
        cell.textLabel.text = numArray1[indexPath.row];
    }else if(indexPath.section == 2){
        cell.textLabel.text = numArray2[indexPath.row];
    }else if(indexPath.section == 3){
        cell.textLabel.text = numArray3[indexPath.row];
    }else if(indexPath.section == 4){
        cell.textLabel.text = numArray4[indexPath.row];
    }else if(indexPath.section == 5){
        cell.textLabel.text = numArray5[indexPath.row];
    }else if(indexPath.section == 6){
        cell.textLabel.text = numArray6[indexPath.row];
    }else if(indexPath.section == 7){
        cell.textLabel.text = numArray7[indexPath.row];
    }
    return cell;
}

@end   

Что здесь может быть не так?

1 Ответ

2 голосов
/ 07 октября 2019

Во-первых, сделайте SecondViewController Делегат и источник данных для табличного представления https://guides.codepath.com/ios/Table-View-Guide

Во-вторых, сделайте [self.tableView reloadData] в конце viewDidLoad

...