2013-04-22 60 views
0

我正在制作一个应用程序,用户可以在详细视图中收藏不同的项目。在表格视图中单独显示收藏夹

我有一个表格视图,其中显示所有项目,我想在同一个表格视图的单独部分中显示最爱。任何想法如何做到这一点?

此时我将所有的收藏夹保存在一个名为favouriteItems的NSMutableArray中。

我想我必须从原始数组中删除最喜欢的对象。 但我可以用两个数组填充tableview吗? 一个阵列在第一部分中的最爱,其余部分在第二部分

+0

所以你到目前为止尝试过什么?你如何“知道”哪一个对象是最喜欢的?它是在两个部分显示两个数组还是将一个数组分成两个,这会阻止你? (不要回答“Both”) – 2013-04-22 08:45:19

回答

2

当然,你可以。你的表格视图只需要2个部分。

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    switch (section) { 
     case 0: 
      return normalItems.count; 
      break; 
     case 1: 
      return favouriteItems.count; 
     default: 
      break; 
    } 
    return 0; 
} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    switch (section) { 
     case 0: 
      return @"Normal Items"; 
      break; 
     case 1: 
      return @"Favorite Items"; 
     default: 
      break; 
    } 
    return nil; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"MyCell"; 

    CeldaCell *cell = (CeldaCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[CeldaCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    switch (indexPath.section) { 
     case 0: 
      cell.textLabel.text = [normalItems objectAtIndex:indexPath.row]; 
      break; 
     case 1: 
         cell.textLabel.text = [favouriteItems objectAtIndex:indexPath.row]; 
      break; 
    } 

    return cell; 
} 
+0

感谢您的回答。我在我的应用程序中做了一些更改,现在我只有一个包含所有食谱的数组,并使用sortUsingComparator对它们进行排序,以便首先显示收藏夹。我有一个称为Item的模型对象,它带有一个名为isFavourite的BOOL。我可以把所有的项目都放在一个部分中,而其他所有人都放在另一部分中? – Jojo 2013-04-23 08:00:51

+0

使用2个数组可能会更高效。但你也可以像你说的那样去做。你只需要有2个部分,并计算通讯录UITableViewDatasource方法中的收藏夹数量和收藏夹数量。我可以发布一些代码,但如果你尝试然后再回来有任何疑问,会更好。 – Odrakir 2013-04-23 08:48:46

+0

我几乎在那里。当我添加一个最喜欢的时候,它会移动到右侧部分,但是在原始部分它被一个空白单元格替换为一个空白标签,当我点击该行时,我喜欢的项目的详细视图显示出来。 在numberOfRowsInSection循环所有我的项目,并有两个整数,如果item.isFavourite == 1增加。在cellForRowAtIndexPath我也检查是否item.isFavourite = 1或0.我设置cell.textlabel = item.title在我的if语句。 – Jojo 2013-04-23 09:04:28