CollectionViewController没有在DetailViewController上看到属性

时间:2017-01-29 17:40:46

标签: objective-c xcode uicollectionview segue

我是新手,我试图了解为什么我的CollectionViewController没有在DetailViewController上看到属性......任何提示或见解都将受到赞赏。代码如下...分别用于我的detailViewController.h和我的CollectionViewController.m。

//  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;
}

1 个答案:

答案 0 :(得分:1)

您正试图在recipeImageName中使用prepareForSegue作为类属性:

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

应该是

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

密切关注第一个字母的大写。 DetailViewController是班级; detailViewController是局部变量。