2017-01-29 3 views
0

저는 초보자이며, 왜 CollectionViewController가 DetailViewController의 속성을 보지 못하고 있는지 이해하려고합니다 ... 어떤 조언이나 통찰력도 인정 될 것입니다. 아래의 코드 ... 각각 내 detailViewController.h 및 내 CollectionViewController.m입니다.CollectionViewController DetailViewController의 속성을 보지 못했습니다.

// DetailViewController.h 
// RecipePhoto 
// 


#import <UIKit/UIKit.h> 

@interface DetailViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UIImageView *recipeImageView; 
@property (nonatomic) NSString *recipeImageName; 
- (IBAction)close:(id)sender; 

@end 


#import "RecipeCollectionViewController.h" 
#import "DetailViewController.h". 

@interface RecipeCollectionViewController() <UICollectionViewDataSource, UICollectionViewDelegate> 
{ 
    NSArray *recipeImages; 
} 
@end 

@implementation RecipeCollectionViewController 

static NSString * const reuseIdentifier = @"Cell"; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    recipeImages = [NSArray arrayWithObjects:@"angry_birds_cake.jpg", @"creme_brelee.jpg", @"egg_benedict.jpg", @"full_breakfast.jpg", @"green_tea.jpg", @"ham_and_cheese_panini.jpg", @"ham_and_egg_sandwich.jpg", @"hamburger.jpg", @"instant_noodle_with_egg.jpg", @"japanese_noodle_with_pork.jpg", @"mushroom_risotto.jpg", @"noodle_with_bbq_pork.jpg", @"starbucks_coffee.jpg", @"thai_shrimp_cake.jpg", @"vegetable_curry.jpg", @"white_chocolate_donut.jpg", nil]; 
    } 


// In a storyboard-based application, you will often want to do a little preparation before navigation 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

if ([segue.identifier isEqualToString:@"showRecipePhoto"]) { 
NSArray *indexPaths = [self.collectionView indexPathsForSelectedItems]; 

     // Get the new view controller using [segue destinationViewController]. 

    DetailViewController *detailViewController = [segue destinationViewController]; 
NSIndexPath *indexPath = [indexPaths objectAtIndex:0]; 

    // Pass the selected object to the new view controller. 
    DetailViewController.recipeImageName = [recipeImages[indexPath.section] objectAtIndex:indexPath.row]; 
[self.collectionView deselectItemAtIndexPath:indexPath animated:NO]; 
} 
} 

#pragma mark <UICollectionViewDataSource> 

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { 
    //return arrayName.count; 
    return 1; 
} 

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 
    return recipeImages.count; 
} 
//provides the data for the collection view cells 
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; 

    // Configure the cell 
    UIImageView *recipeImageView = (UIImageView *)[cell viewWithTag:100]; 
    recipeImageView.image = [UIImage imageNamed:[recipeImages objectAtIndex:indexPath.row]]; 

    return cell; 
} 
+0

스택 오버플로에 오신 것을 환영합니다! 디버깅 도움을 요청하는 질문 ("이 코드가 작동하지 않는 이유는 무엇입니까?")에는 원하는 동작, _a 특정 문제 또는 error_ 및 _ 그 자체를 재현하는 데 필요한 _ 최단 코드 **가 포함되어야합니다. 분명한 문제 성명이없는 질문은 다른 독자에게 유용하지 않습니다. 참조 : [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve). –

답변

1

당신은 prepareForSegue에서 클래스 속성으로 recipeImageName을 사용하려고 :

DetailViewController.recipeImageName = [recipeImages[indexPath.section] objectAtIndex:indexPath.row]; 

은 첫 글자의 대소에

detailViewController.recipeImageName = [recipeImages[indexPath.section] objectAtIndex:indexPath.row]; 

지불 세심한주의를해야한다. DetailViewController이 클래스입니다. detailViewController은 지역 변수입니다.

+0

네, 고맙습니다. :) – Susanglin

+0

@AngieLinton, 정답을 입력하면 대답의 왼쪽 상단에있는 작은 녹색 체크 박스를 선택하여 정답을 표시하는 것이 적절합니다. 다행히 사이트가 도움이되었지만 정중하게 사용하는 방법을 배우십시오. (Joe C는 질문이 당신의 부분에서 디버깅의 증거를 제공하지 않는다는 것도 맞습니다.) – danh

+0

@danh 저에게 말씀해 주셔서 감사합니다. 그것은 저의 첫 번째 질문이었습니다. 나는 그 단계를 놓쳤다는 것을 깨닫지 못했습니다. 건배! – Susanglin