2016-09-15 5 views
-1

콜렉션 뷰를 사용 중입니다. 하나의 이미지를 탭하면 다음 스크린으로 이동합니다. 여기서 사용자는 텍스트 뷰에서 그림의 세부 사항을 입력 할 수 있으며, 사용자가 저장 버튼을 누르면 두 번째보기 컨트롤러 텍스트를 저장하고 첫 번째보기 컨트롤러로 이동해야하며이 이미지를 표시하기위한 한 개의 기호를 넣어야합니다. 그러한 문자가 있습니다콜렉션 뷰

내가 한 일은 터치 된 이미지를 저장하는 사전 하나를 만들었습니다 두 번째보기 컨트롤러에서 입력 한 문자열과 키 및 값으로 .i 사용자가 이전 화면으로 이동하면 기호를 표시하고 싶지 않습니다. 날이

//collection view methods 

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView*)collectionView 
{ 
return 1; 

} 
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
{ 
return [self.imageArray count]; 

} 

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

PicturesCollectionViewCell *Cell1 = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell1" forIndexPath:indexPath]; 

NSLog(@"%@",self.imageArray); 

Cell1.self.imageView.image=[self.imageArray objectAtIndex:indexPath.row]; 

Cell1.layer.borderWidth = 2.0f; 
Cell1.layer.borderColor = [UIColor blackColor].CGColor; 

//button to tap 

UIButton *tapButton = [[UIButton alloc]init]; 

tapButton.frame = CGRectMake(0, 0, 96, 82); 

[tapButton addTarget:self action:@selector(Tap:) forControlEvents:UIControlEventTouchUpInside]; 
[tapButton setTag:indexPath.row]; 

[Cell1.contentView addSubview:tapButton]; 

self.imageSelected = [self.imageArray objectAtIndex:indexPath.row]; 

NSLog(@" the image is:%@",self.imageSelected); 

return Cell1; 
} 
    -(IBAction)Tap:(id)sender 
{ 
UIButton *btn = (UIButton *)sender; 

self.key = @(btn.tag); 
int tag = [self.key intValue]; 
self.imageSelected = [self.imageArray objectAtIndex:tag]; 
NSLog(@" image selected in picture confirm screen %@",self.imageSelected); 
NotesViewController *NotesVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NotesVC"]; 
NotesVC.self.notes_Array = self.imageSelected; 
[self.navigationController pushViewController:NotesVC animated:YES]; 

    } 

    2nd view controller -Notes View Controller 
    - (IBAction)bnt_Save_Notes:(id)sender { 

    if (self.txtview_Notes.text.length == 0) { 

    [StaticHelper showAlertWithTitle:nil message:@"Notes Should Not be empty" onViewController:self]; 

} 

else 
{ 


    self.string = self.txtview_Notes.text; 

    NSLog(@" the noted string is :%@",self.string); 





    PicViewController *PictureVC = [self.storyboard instantiateViewControllerWithIdentifier:@"PictureVC"]; 
    NSMutableDictionary *dict = [[NSMutableDictionary alloc]init]; 

    [dict setObject:self.string forKey:self.notes_Array]; 
    [self.navigationController popViewControllerAnimated:YES]; 



} 

몇 가지 아이디어가이 일을 말 해주세요 할 도와주세요.

+0

테이블 경로를 다시로드하면 셀에 체크 표시가 나타납니다. –

+0

Thanks @Teja Nandamuri하지만 첫 번째보기 컨트롤러에 사전을 보내지 않았습니다. 그리고 어디 컬렉션보기 셀을 다시로드해야합니다. 사용자가 세부 사항을 입력 한 동일한 그림을 터치하면 입력 된 텍스트가 두 번째보기 컨트롤러에 있어야합니다.이 – user6183984

+0

코드의 이상한 서식을 읽지 않는 것이 좋습니다. – vikingosegundo

답변

0

컬렉션보기 컨트롤러에 사전을 만들어야하며,이 dic에는 셀이 검사해야하는 정보가 있어야합니다. 당신은 예를 들어

, indexpath로 키를 사용할 수 있습니다 :

컬렉션 뷰 컨트롤러에서

:

dictionary = @{ @"1" : @[ your-data, NO], 
       @"2" : @[ your-data, NO], 
       @"3" : @[ your-data, NO]}; 

    here keys @"1",@"2",@"3" serve as indexpath 

및 이미지를 클릭하면 didSelectRow 위임 방법과 함께이 사전을 통과 두 번째보기 컨트롤러에서 indexPath를 수정합니다.

그리고 다시 두 번째 뷰 컨트롤러에서 올 한 번, 컬렉션 뷰 컨트롤러

 dictionary = @{ @"1" : @[ your-data, NO], 
       @"2" : @[ your-data, YES], 
       @"3" : @[ your-data, NO]}; 

이 사전을 전달하고 컬렉션 뷰를 다시로드합니다.

+0

@thanks Teja Nandamuri, 코드를 보내야합니까? 제 코드를 살펴 보시겠습니까? – user6183984

+0

내가 제안한 방식대로 시도해 볼 수 있으며 여전히 시도 할 수 없다면 시도한 내용으로 질문을 업데이트하면 도움이됩니다. –

+0

실제로 제가 두 번째보기 컨트롤러에서 첫 번째 컨트롤러를 delegate.but를 사용하여 사전을 보내려고했는데 컨트롤이 제대로 작동하지 않는 중단 점을 통과했습니다. – user6183984

관련 문제