2017-09-22 7 views
0

NSUserDefaults에 indexPath를 저장할 수 없다는 것을 알고 있습니다. 사용자가보기 컨트롤러를 열 때 사용자가 선택하는 셀을 저장하려고합니다. 컬렉션보기의 선택된 셀이 표시됩니다. 그러나 아래의 코드는 선택한 셀을 저장하지 않습니다. 첫 번째 코드 블록은 선택된 셀을 저장한다고 가정하고 두 번째 코드 블록은이 코드가 실행되지 않을 것이라고 말합니다 (아래 명시).NSUserDefaults가 선택된 셀의 indexPath를 저장하지 않습니다.

if (collectionView ==self.septView) { 
    // Call identifier 
    static NSString *identifier = @"cell"; 
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; 

    cell.layer.masksToBounds = YES; 
    cell.layer.cornerRadius = 6; 

    // cell.contentView.backgroundColor = [UIColor purpleColor]; 


    // Color 
    self.septView.backgroundColor = [UIColor clearColor]; 

    // Label 
    self.titles = [[UILabel alloc]initWithFrame:CGRectMake(0, 10, cell.bounds.size.width, 40)]; 
    self.titles.tag = 0; 
    self.titles.textColor = [UIColor whiteColor]; 
    self.titles.textAlignment = NSTextAlignmentCenter; 
    self.titles.font = [UIFont fontWithName:@"Avenir" size:15]; 
    self.titles.text = [self.sept objectAtIndex: indexPath.row]; 
    [cell.contentView addSubview:self.titles]; 



    return cell; 
} 
+1

가능한 중복 NSUserDefaults] (https://stackoverflow.com/questions/21509911/error-when-trying-to-save-indexpath-to-nsuserdefaults) – the4kman

+0

그 코드를 사용했지만 nev 어. 그래도 내 질문이 업데이트되었습니다. 생성하고 구현 한 NSIndexPath가 작동하지 않습니다. 당신이 게시 한 질문에는 어떤 내용이 포함되어 있지 않습니다. 나는'CellForItemAtIndexPath' @ the4kman에서 잘못된 코드 행을 썼다고 생각한다. – Lisa

답변

0

을 실행되지 않습니다

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [[NSUserDefaults standardUserDefaults] setObject:@{@"row": @(indexPath.row), 
                 @"section": @(indexPath.section)} 
               forKey:@"CollectionIndex"]; 

    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 

    NSIndexPath *storedIndexPath = [[NSUserDefaults standardUserDefaults] objectForKey:@"CollectionIndex"]; 

    static NSString *identifier = @"cell"; 
    UICollectionViewCell *myCell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:storedIndexPath]; 

    myCell.contentView.backgroundColor = [UIColor purpleColor]; 
    myCell.layer.masksToBounds = YES; 
    myCell.layer.cornerRadius = 6; 

    return myCell; 

} 

내 컬렉션보기 CODE이처럼 cellForItemAtIndexPath에 인덱스 경로를 얻을 수 있습니다 :

NSDictionary *storedIndexDictionary = [[NSUserDefaults standardUserDefaults] objectForKey:@"CollectionIndex"]; 
    NSInteger row = [[storedIndexDictionary objectForKey:@"row"] integerValue]; 
    NSInteger section = [[storedIndexDictionary objectForKey:@"section"] integerValue]; 

    NSIndexPath *storedIndexPath = [NSIndexPath indexPathForRow:row inSection:section]; 
[오류 indexPath을 저장하려고 할 때의