gpt4 book ai didi

ios - 未在 UITableViewController 子类中调用 UiTableViewController 委托(delegate)方法

转载 作者:行者123 更新时间:2023-11-29 13:09:44 26 4
gpt4 key购买 nike

为什么不调用 numberOfSectionsInTableView 方法?如果我在 viewDidLoad 中添加 [self.tableView reloadData],它就会被调用,但即便如此,cellForRow 也不会被调用。

编辑:我更新了以下代码来为 UITableViewCell 注册 Nib 。

UIViewController 中,我有:

- (void)viewDidLoad
{
[super viewDidLoad];
XXFeedTableViewController *tableViewController = [[XXFeedTableViewController alloc] initWithStyle:UITableViewStylePlain];
tableViewController.view.frame = self.view.bounds;
[self addChildViewController:tableViewController];
}

XXFeedTableViewController.h

@interface XXFeedTableViewController : UITableViewController
@end

XXFeedTableViewController.m

#import "XXFeedTableViewController.h"
#import "XXFeedTableViewCell.h"

@interface XXFeedTableViewController ()

@end

@implementation XXFeedTableViewController

- (id)initWithStyle:(UITableViewStyle)style {
self = [super initWithStyle:style];
if (self) {
}
return self;
}

- (void)viewDidLoad {
[super viewDidLoad];
[self.tableView registerNib:[UINib nibWithNibName:@"XXFeedTableViewCell" bundle:nil] forCellReuseIdentifier:@"XXFeedTableViewCell"];
}

#pragma mark - Table view data source

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

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"XXFeedTableViewCell";
XXFeedTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = @"Hey";
return cell;
}

@end

Apple 文档说:

If no nib file is specified or if the nib file defines no data source or delegate, UITableViewController sets the data source and the delegate of the table view to self. When the table view is about to appear the first time it’s loaded, the table-view controller reloads the table view’s data.

最佳答案

试试这个,看看它是否有效。这是 Apple 现在推荐的基于 Nib 的电池的方式。

-(void)viewDidLoad {
[super viewDidLoad];
[self.tableView registerNib:[UINib nibWithNibName:@"XXFeedTableViewCell" bundle:nil] forCellReuseIdentifier:@"XXFeedTableViewCell"];
}

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

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"XXFeedTableViewCell";
ROFeedTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = @"Hey";
return cell;
}

编辑后:

在您的初始 Controller 中,您应该在添加其 subview 之前将 TableView Controller 添加为子 Controller :

   XXFeedTableViewController *tableViewController = [[XXFeedTableViewController alloc] initWithStyle:UITableViewStylePlain];
self addChildViewController:tableViewController];
tableViewController.view.frame = self.view.bounds;
[self.view addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];

关于ios - 未在 UITableViewController 子类中调用 UiTableViewController 委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17690768/

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