2014-03-24 26 views
0

我UIcollectionView在Uinavigationviewcontroller後,我的應用程序的第一個視圖只是故事板就像這樣:沒有在UIcollectionView控制器apear

enter image description here

這是我RootViewController.h

#import <UIKit/UIKit.h> 
@interface RootViewController : UICollectionViewController<UICollectionViewDelegate,UICollectionViewDataSource> 
@property (nonatomic, strong) NSArray *entries; 
@end 

和我RootViewController.m:

#import "RootViewController.h" 
#import "AppRecord.h" 
#import "Cell.h" 
#define kCustomRowCount  7 


@interface RootViewController() <UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout> 
// the set of IconDownloader objects for each app 
@property (nonatomic, strong) NSMutableDictionary *imageDownloadsInProgress; 
@end 


@implementation RootViewController 

#pragma mark 

// ------------------------------------------------------------------------------- 
// viewDidLoad 
// ------------------------------------------------------------------------------- 
- (void)viewDidLoad 
{ 
NSLog(@"inside class"); 
    [super viewDidLoad]; 
    // self.title = @"My Title"; 

    //self.collectionView.delegate = self; 
    //self.collectionView.dataSource=self; 

} 


- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ 
    NSUInteger count = [self.entries count]; 
    NSLog(@"count: %lu", (unsigned long)count); 

    if (count == 0) 
    { 
     return kCustomRowCount; 
    } 
    return count; 
} 


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

    NSLog(@"inside cell"); 
    AppRecord *appRecord = [self.entries objectAtIndex:indexPath.row]; 
    Cell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MY_CELL" forIndexPath:indexPath]; 
    UIImage *truckImage = [[UIImage alloc] init]; 
    truckImage = [UIImage imageNamed:@"Default.png"]; 
    cell.imageView.image = truckImage; 
    return cell; 
} 

@end 

現在的問題是我的「cellForItemAtIndexPath」或「numberOfItemsInSection」或甚至「viewDidLoad」被調用,並且模擬器上的輸出是黑屏。

這是AppDelegate類的重載我部分:

__block ParseOperation *weakParser = parser; 

    parser.completionBlock = ^(void) { 
     if (weakParser.appRecordList) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       RootViewController *rootViewController = (RootViewController*)[(UINavigationController*)self.window.rootViewController topViewController]; 

       rootViewController.entries = weakParser.appRecordList; 
       if(weakParser.appRecordList != nil) 
        NSLog(@"weakParser.appRecordList is Not nill"); 
       [rootViewController.collectionView reloadItemsAtIndexPaths:[rootViewController.collectionView indexPathsForVisibleItems]]; 
       [rootViewController.collectionView reloadData]; 
      }); 
     } 

     self.queue = nil; 
    }; 

    [self.queue addOperation:parser]; 
    self.appListData = nil; 
} 
+1

從Ray Wenderlich教程開始。幾乎有數百個地方可以找到答案。當你與他們卡住,然後來到這裏。你需要首先了解他們是如何工作的。 – Fogmeister

+0

我對uitableview和iVE沒有任何問題,在「Ray Wenderlich」教程中提到的一切都是這樣的: http://www.raywenderlich.com/22324/beginning-uicollectionview-in-ios-6-part-12 dont知道爲什麼我堅持在這裏很糟糕 –

回答

2

你添加對集合視圖的委託和數據源連接?這是最常見的錯誤,通常。他們在代碼中註釋掉,我認爲你這樣做,通過故事板

+0

是的,我完成了兩個,但沒有發生,然後我評論線。 即時通訊使用lazyloading appdelegate重新加載collectionview數據: [rootViewController.collectionView reloadItemsAtIndexPaths:[rootViewController.collectionView indexPathsForVisibleItems]]; [rootViewController.collectionView reloadData]; –

+1

你說得對,我通常不使用UICollectionViewControllers,因爲我發現嵌入式集合視圖的UIViewControllers更加靈活。你什麼時候在AppDelegate中調用這些方法?他們需要被稱爲AFTER RootViewController的viewDidLoad –

+0

感謝您的建議,我的問題是「viewDidLoad」或「viewWillApear」沒有得到我的rootviewcontroller內部調用。 –

1

你有情節提要小區標識?你可以嘗試在viewDidLoad中

添加

[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"MY_CELL"]; 

因爲你的RootViewController的繼承UICollectionViewController你不需要添加UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout在所有

+0

感謝您的建議,是的,我爲故事板中的單元格設置了標識符。問題是沒有「viewDidLoad」或「viewWillApear」在我的班級中被調用。 –

+0

如果在故事板中設置了錯誤的類,就會發生這種情況,因爲它只有一個類,我懷疑它是錯誤的。嘗試重新啓動xCode並再次設置viewController的類 – wootage