IOS表视图中的节数动态
Posted
技术标签:
【中文标题】IOS表视图中的节数动态【英文标题】:IOS Number Of Sections In Table View Dynamic 【发布时间】:2014-08-24 07:32:59 【问题描述】:我正在创建一个应用程序,用户可以在其中将对象存储在 Core Data 中。我将对象拉到 UITableView 中,并且在那里一切正常。我现在想根据 UISegmentedControl 中的选择将对象分成 1-3 个不同的部分。
目前我有这个来创建 1 部分并用我的对象填充该部分的单元格
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
// Return the number of sections.
return 1;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
// Return the number of rows in the section.
return self.fetchedDiscs.count;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"DiscCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
//Configure Cell
Disc *currentDisc = [self.fetchedDiscs objectAtIndex:indexPath.row];
cell.textLabel.text = currentDisc.name;
cell.detailTextLabel.text = currentDisc.brand;
return cell;
那么主要的问题是如何动态改变section的个数和section的行数?
Segmented 控件返回诸如选项 1、选项 2、选项 3 之类的值。我能想到的唯一方法是循环遍历我的 fetchedDiscs 数组并将其分成每个部分的数组。然后我可以返回数组的数量(如果它们存在),我可以获取每个数组的计数以获取每个部分中的行数。但后来我遇到了如何让 CellForRowAtIndextPath 与三个数组一起正常工作的问题。
基本上必须有更好更合乎逻辑的方式来做到这一点。我只是不确定如何。
【问题讨论】:
您所描述的几乎就是您将如何做。传递给cellForRowAtIndexPath:
的 indexPath
包含 section
属性,因此您知道给定单元格使用哪个数组
您可能需要先找到一个不错的教程,因为您似乎缺乏使用UITableView
实例的一些基本知识。对于您的简单问题,任何可能的答案都太复杂了,如果您不理解或无法使用它在您的应用中实现最终解决方案,您可能会投反对票。
【参考方案1】:
假设您有一个名为 dataSource 的字典,其中包含“x”个数组作为键“key1”、“key2”、..“keyX”的值。你可以这样做:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
return [[dataSource allKeys] count];
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
//Get the array object form key. I am considering 'keySection' as an example
return [[dataSource objectForKey:@"keySection"] count];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"DiscCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = [[dataSource objectForKey:keySection] objectAtIndex:indexPath.row]
return cell;
注意:我在这个编辑器中编写了代码,请原谅任何错误,我只是试图分享这个想法。希望这会有所帮助.. :)
【讨论】:
所以这似乎有很大帮助并且确实有一定的意义,但由于我对 Obj-c 非常了解,我不知道如何正确设置字典。如果在我的 fetchedDisc 数组中我有我的磁盘对象的详细信息并且在 type 属性上我有 option1、option2 或 option3 我如何将数组拆分到由这些键拆分的数组字典中? @CodyJamesTooker> 发布您的数据。以上是关于IOS表视图中的节数动态的主要内容,如果未能解决你的问题,请参考以下文章
加载 tableview 时应用程序崩溃并显示错误“无效更新:无效的节数”。