Программно созданный делегат просмотра таблицы не работает - PullRequest
0 голосов
/ 05 июля 2018

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

Мой файл .h (для делегата tableViewJobList и источника данных задан viewcontroller в раскадровке)

@interface JobByAccountViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@property (weak, nonatomic) IBOutlet UITableView *tableViewJobList;
...
@end

Мой .m файл

...

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    //realJoblist is my data array
    if (tableView == _tableViewJobList) {
        return [realJobList count];
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == _tableViewJobList) {
        return 1;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == _tableViewJobList) {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
        if (!cell) {
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
        }

        //each cell has a tableview
        UITableView *subTableView = [[UITableView alloc]initWithFrame:CGRectZero style:UITableViewStylePlain];
        subTableView.delegate = self;
        subTableView.dataSource = self;

        subTableView.frame = CGRectMake(0, 0, cell.bounds.size.width, cell.bounds.size.height);
        [cell addSubview:subTableView];

        return cell;
    }
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == _tableViewJobList) {
        NSLog(@"outer tableview");
    } else {
        NSLog(@"inner tableview");
    }
    ...
}

... 

В heightForRowAtIndexPath не должен сработать оператор print в блоке else, потому что это те табличные представления, которые я создал программно?

1 Ответ

0 голосов
/ 06 июля 2018

Попробуйте это ,,, Вы просто замените название своего розетки.

- (void)viewDidLoad {
    [super viewDidLoad];

        tableViewJobList.delegate = self;
            tableViewJobList.dataSource = self;

}


    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        //realJoblist is my data array
        if (tableView == _tableViewJobList) {
            return [realJobList count];
        }
    }

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        if (tableView == _tableViewJobList) {
            return 1;
        }
    }

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        if (tableView == _tableViewJobList) {
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
            if (!cell) {
                cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
            }

            //each cell has a tableview
            UITableView *subTableView = [[UITableView alloc]initWithFrame:CGRectZero style:UITableViewStylePlain];
            tableViewJobList.delegate = self;
            tableViewJobList.dataSource = self;

            subTableView.frame = CGRectMake(0, 0, cell.bounds.size.width, cell.bounds.size.height);
            [cell addSubview:subTableView];

            return cell;
        }
    }

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
        if (tableView == _tableViewJobList) {
            NSLog(@"outer tableview");
        } else {
            NSLog(@"inner tableview");
        }
        ...
    }

    ... `enter code here`
...