gpt4 book ai didi

objective-c - 如何在ScrollView中实现动态UITTableViews,动态量为 'pages'

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

我一直在尝试实现一个在 UITableView 中显示数据的界面定制 UITTableViewCell位于 ScrollView 内(为了清楚起见,链接到 Page Control)。

我发现了一些教程,展示了如何单独实现这些功能,但没有一起实现,而且我没有真正找到有关如何加载几个自定义 UITableView 的任何内容。进入 Controller 。我的基本方法现在归结为 UIViewController 中的这一点。的viewDidLoad :

for (int i = 0; i < 4; i++) {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * i;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;

SceduleTableView *sceduleTable = [[SceduleTableView alloc] initWithFrame:frame];

[sceduleTable setDelegate:sceduleTable];
[sceduleTable setDataSource:sceduleTable];
[self.scrollView addSubview:sceduleTable];
}

我已经用 4 个页面进行了测试,但在我解决这个问题后,这些将变成动态数量。

SceduleTableView继承自UITableView并具有从本地 sqlite 数据库获取包含对象的数组的数据源。我已经让所有 SceduleTableViews 为每个 SceduleTableView 加载数据的部分正常工作,但目前构建失败并返回此错误:

2012-08-13 15:43:18.975 basis[2055:f803] -[SceduleTableView tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x8bc4800
2012-08-13 15:43:18.976 basis[2055:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SceduleTableView tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x8bc4800'

该函数实际上并没有做太多事情,但甚至连 NSLog 也从未到达:

- (NSInteger)numberOfRowsInSection:(NSInteger)section
{
NSLog(@"Should have %d rows", sceduleItems.count);
return sceduleItems.count;
}

而且我知道我尝试填充表格的数组不为空,而且 SceduleTableView 实例也不为零(我读到这可能是问题所在)。这些日志为每个 SceduleTableView 返回此信息

NSLog(@"Array sceduleItems contains %d", sceduleItems.count);
NSLog(@"Trying to reload. Self = %@", self);
[self reloadData];

2012-08-13 15:49:32.183 basis[2259:f803] Array sceduleItems contains 340
2012-08-13 15:49:32.184 basis[2259:f803] Trying to reload. Self = <SceduleTableView: 0xbabb800; baseClass = UITableView; frame = (960 0; 320 440); clipsToBounds = YES; layer = <CALayer: 0x6e29660>; contentOffset: {0, 0}>

我对 iOS 开发非常陌生,说实话,我真的不确定我的方法是否正确。非常感谢您的反馈!

最佳答案

系统尝试调用方法tableView:numberOfRowsInSection:。你还没有定义那个。您已经定义了方法 numberOfRowsInSection:,覆盖了 UITableView 的默认实现。请不要这样做。

你应该定义

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"Should have %d rows", sceduleItems.count);
return sceduleItems.count;
}

在您的数据源中。

此外,许多开发人员可能会对您使用 TableView 对象作为他们自己的委托(delegate)和数据源感到不满。也许您想熟悉Model-View-Controller更常见的设计替代方案的范例。

关于objective-c - 如何在ScrollView中实现动态UITTableViews,动态量为 'pages',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11935793/

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