我正在创建一个应用程序,用户可以在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;
}
所以主要的问题是如何动态更改节中的节数和行数?
分段控件返回选项1,选项2,选项3等值。我能想到的唯一方法是遍历我的fetchedDiscs数组并将其分成每个部分的数组。然后我可以返回数组的数量(如果它们存在)并且我可以得到每个数组的计数以获得每个部分中的行数。但后来我遇到了如何使CellForRowAtIndextPath与三个数组一起正常工作的问题。
基本上必须有更好的逻辑方法来做到这一点。我只是不确定如何。
答案 0 :(得分:2)
让你有一个名为dataSource的词典,其中包含' x'数组的数量为key" 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;
}
注意:我在这个编辑器中编写代码,原谅任何错误,我只是试图分享这个想法。希望这有助于.. :))