2017-08-29 3 views
0

Je suis un débutant essayant d'apprendre comment Aff collection programaticallyComment définir une vue de collection par programmation dans Objective C?

let layout = UICollectionViewFlowLayout()  
window?.rootViewController = UINavigationController(rootViewController : HomeController(collectionViewLayout:layout)) 

Je suis en train d'obtenir le code ci-dessus rapide dans l'objectif C. Ce que je l'ai fait jusqu'à présent est ci-dessous les résultats en erreur. Quels sont les changements que je dois faire dans le code objc pour atteindre ci-dessus.

ViewController *controller = [[ViewController alloc] init]; // @interface ViewController : UICollectionViewController 
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; 
self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[controller collectionViewLayout:layout]] ; // ERROR How to set Collection View? 
+0

c'est ce que tu veux, voir https://stackoverflow.com/questions/17856055/creating-a-uicollectionview-programmatically –

Répondre

0

comprendre Peut-être que je ne l'ai pas ce que vous voulez réaliser ...

Qu'est-ce que vous avez besoin est d'ajouter une méthode d'initialisation personnalisée à votre ViewController. Par exemple:

// In your .h file 
@interface HomeViewController : UIViewController 

- (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)collectionViewLayout; 

@end 

// In your .m file 
@interface HomeViewController() 

@property (nonatomic, strong) UICollectionViewLayout* collectionViewLayout; 

@end 

@implementation HomeViewController 

- (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)collectionViewLayout 
{ 
    self = [super init]; 
    if (self) { 
     _collectionViewLayout = collectionViewLayout; 
    } 
    return self; 
} 

// Other code here 

@end 

Vous pouvez utiliser le code comme suit:

[[HomeViewController alloc] initWithCollectionViewLayout:yourLayout]; 

Sinon, au lieu d'utiliser une injection de constructeur, vous pouvez faire une injection de propriété.

// In your .h file 
@interface HomeViewController : UIViewController 

@property (nonatomic, strong) UICollectionViewLayout* collectionViewLayout; 

@end 

Et utiliser ce code comme:

HomeViewController* vc = [[HomeViewController alloc] init]; 
vc.collectionViewLayout = yourLayout; 
+0

Merci. J'ai édité le code maintenant les erreurs ont disparu. C'est la bonne route? self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController: [contrôleur initWithCollectionViewLayout: disposition]]; – ios