2014-11-06 22 views
6

Czy istnieje rozwiązanie tego problemu?Swift "nie ma członka o nazwie"

class ViewController : UIViewController { 
    let collectionFlowLayout = UICollectionViewFlowLayout() 
    let collectionView = UICollectionView(frame: CGRectZero, collectionViewLayout: collectionFlowLayout) 
} 

Xcode daje mi następujący błąd

ViewController.swift: 'ViewController.Type' does not have a member named 'collectionFlowLayout' 

mogę zrobić to opcjonalny i zainicjuj go w metodzie init, ale szukam sposób, aby CollectionView let i nie a var

Odpowiedz

3

Możesz przypisać wartości początkowe do stałych zmiennych składowych w inicjalizatorze. Nie ma potrzeby, aby było to var lub opcjonalne.

class ViewController : UIViewController { 
    let collectionFlowLayout = UICollectionViewFlowLayout() 
    let collectionView : UICollectionView 

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) 
    { 
     self.collectionView = UICollectionView(frame: CGRectZero, 
           collectionViewLayout: self.collectionFlowLayout); 

     super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil); 
    } 

    required init(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 
} 
0

W tym momencie nie ma utworzonego collectionFlowLayout, więc narzeka, że ​​nie ma członka o takiej nazwie.

Rozwiązaniem może być, jak wspomniano, aby to opcjonalne i zainicjować go w init czy można to zrobić:

let collectionView = UICollectionView(frame: CGRectZero, collectionViewLayout: UICollectionViewFlowLayout()) 
+0

@MehulThakkar Próbowałem twój cade w kodzie X 6.1 i to nie działa. – Greg

1

Ustawianie niech zmienne (stałe) W sposobie Init:

class ViewController : UIViewController { 
    let collectionFlowLayout: UICollectionViewFlowLayout! 
    let collectionView: UICollectionView! 

    init() { 
     super.init() 
     self.collectionFlowLayout = UICollectionViewFlowLayout() 
     self.collectionView = UICollectionView(frame: CGRectZero, collectionViewLayout: collectionFlowLayout) 
    } 
} 

Możemy uzyskać dostęp do zmiennych let z siebie.

Mam nadzieję, że to zadziała.

Powiązane problemy