gpt4 book ai didi

ios - UITableViewCell 中的 UITableView 委托(delegate)和数据源

转载 作者:行者123 更新时间:2023-11-29 10:22:41 25 4
gpt4 key购买 nike

我在 UITableViewCell 中有一个 UITableView,我需要弄清楚如何设置子 TableView 数据源和委托(delegate)。目前这就是我所拥有的:

MainTableViewController.h

#import <UIKit/UIKit.h>

@interface MainTableViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>


@end

MainTableViewController.m

#import "MainTableViewController.h"
#import "TableViewCell.h"

@interface MainTableViewController ()

@property (weak, nonatomic) IBOutlet UITableView *tableView;

@end

@implementation MainTableViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

#pragma mark - UITableView delegate functions

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 3;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"tableViewCell";
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

cell.cellLabel.text = [NSString stringWithFormat:@"%ld", (long)indexPath.row];

return cell;

}


@end

TableViewCell.h

#import <UIKit/UIKit.h>

@interface TableViewCell : UITableViewCell <UITableViewDelegate, UITableViewDataSource>

@property (weak, nonatomic) IBOutlet UILabel *cellLabel;
@property (weak, nonatomic) IBOutlet UITableView *subTableView;

@end

TableViewCell.m

#import "TableViewCell.h"

@implementation TableViewCell

-(id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
self.subTableView.delegate = self;
self.subTableView.dataSource = self;
}

return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];

// Configure the view for the selected state
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

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

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"subTabeViewCell"];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"subTabeViewCell"];

cell.textLabel.text = @"test";

return cell;
}

@end

因为我不能 ctrl + 从我的子 TableView 拖动到 TableViewCell 类,我试图在初始化中以编程方式设置委托(delegate)和数据源,但它不起作用,我只是直接感到困惑。

我知道我可以将数据源和委托(delegate)设置为连接到第一个类,然后在每个委托(delegate)函数中检查我正在处理的是哪个 tableView,但这与我尝试做的事情的性质有关它不会真的起作用,我试过了。

欢迎大家的帮助

最佳答案

所以我想通了,好吧,我想通了一种方法。在 Main TableViewController.m 的 cellForRowAtIndexPath 中,我简单地添加了:

[cell.subTableView setDelegate:cell];
[cell.subTableView setDatasource:cell];

一切顺利

关于ios - UITableViewCell 中的 UITableView 委托(delegate)和数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34086284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com