我将创建一个分段控件,该控件具有“收藏夹|全部”选项,当它被切换时,被BOOL
调用favoritesOnly
或类似的东西被切换YES
到NO
,反之亦然。我的歌曲将保存在NSArray
of NSDictionary
s中songsArray
,我将使用它作为我的DataSource
方法:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(favoritesOnly)
{
NSInteger count = 0;
for(int n=0; n<[songsArray count]; n++)
if([[[songsArray objectAtIndex:n] objectForKey:@"Favorite"] isEqualToString:@"YES"])
count++;
return count;
}
else
{
return [songsArray count];
}
}
然后对于单元格:
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
UITableViewCell *theCell = [tableView dequeueReusableCellWithIdentifier:@"Proto Cell"];
if(favoritesOnly)
{
NSInteger count = -1;
for(int n=0; n<[songsArray count]; n++)
{
if([[[songsArray objectAtIndex:n] objectForKey:@"Favorite"] isEqualToString:@"YES"])
{
count++;
if(count==[indexPath row])
{
//Configure the Cell using [songsArray objectAtIndex:n]
return theCell;
}
}
}
//If you got here there was an error; Error cell?
return theCell;
}
else
{
//Configure cell using [songsArray objectAtIndex:[indexPath row]]
return theCell;
}
}
这样,您使用的是相同的数据集和相同的UITableView
,您只是使用您的控件来正确委派如何DataSource
在UITableView
现在,如果您使用 CoreData 和 and NSFetchedResultsController
,这一切都容易得多。