collectionView,didSelectItemAtIndexPath问题

时间:2013-01-30 14:34:18

标签: ios6 uicollectionview uicollectionviewcell

我对collectionView有一个有趣的问题,特别是didSelectItemAtIndexPath

我的应用程序有一个带有背景图像的特定视图,可以通过SQL访问。在该视图中是一个带有collectionView的popover,用于更改父视图的背景,以及访问可供购买的其他“集合”。

我的问题是改变背景。所有项目在集合视图中正确显示,父项的背景将按预期更改。问题是所选项目不是显示的项目,即使通过NSLog,我可以看到正在选择正确的图像并将其传递回父项。父级中有一个对应的NSLog,它显示与弹出窗口NSLog相同的图像ID。

点击时,collectionView中的第一项会将父级的背景更改为白色,就好像没有可用的图像一样。点击第二个单元格将显示第一个单元格的图像。点击第三个单元格将显示第二个单元格的图像......依此类推。共有15幅图像可供选择。

这是didSelect方法:

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    if ([_currentView isEqualToString:@"New_Journal"])
    {
        MyAppDelegate *appDelegate = (MyAppDelegate *)[UIApplication.sharedApplication delegate];
        // to get the variable back to the parent
        appDelegate.loadBackgroundID = indexPath.row; 
        // interact with the SQL via _settingsDao
        [_settingsDao updateJournalBackgroundId:_journalId withBackgroundId:appDelegate.loadBackgroundID];
        NSLog(@"Selected background: %d", indexPath.row);
        // notification to let EntryView know the background has changed
        [NSNotificationCenter.defaultCenter postNotificationName:@"aBackgroundChanged" object:self];
    }
}

编辑以显示SQL交互方法:

-(void)updateJournalBackgroundId:(int)journalID withBackgroundId:(int)newBackgroundId
{
    NSString *query = @"UPDATE BgIconBorderSettings SET background_id = ? WHERE journal_id = ?";
    FMDatabase *db = [dbUtils sharedDB];
    [db executeUpdate:query,[NSNumber numberWithInt:newBackgroundId],[NSNumber numberWithInt:journalID]];
    if([db hadError])
    {
        NSLog(@"Error %d: %@",[db lastErrorCode],[db lastErrorMessage]);    
    }       
}

任何人对如何获得要显示的抽头单元的正确图像有任何想法?感谢您解决此问题的任何帮助。

正如jhilgert指出的那样......它是SQL数据库。它从1开始而不是0.改变了ID并且它按预期工作。

0 个答案:

没有答案