IOS表格视图中的动态数量

时间:2014-08-24 07:32:59

标签: ios objective-c arrays uitableview

我正在创建一个应用程序,用户可以在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与三个数组一起正常工作的问题。

基本上必须有更好的逻辑方法来做到这一点。我只是不确定如何。

1 个答案:

答案 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;
}

注意:我在这个编辑器中编写代码,原谅任何错误,我只是试图分享这个想法。希望这有助于.. :))