2014-11-06 79 views
6

是否有解决此问题的方法?Swift'没有会员姓名'

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

的xcode给了我下面的错误

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

我可以使它可选,并在init方法初始化它,但我正在寻找一种方法,使的CollectionView一让,而不是一个变种

回答

3

您可以将初始值分配给初始值设定项中的常量成员变量。没有必要使它成为var或可选。

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

在这一点上没有collectionFlowLayout创建,所以它抱怨没有这样的成员命名。

该解决方案可以像你提到使它可选的,并且在INIT初始化它,或者你可以这样做:

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

@MehulThakkar我想你的凯德在Xcode 6.1和它不工作。 – Greg 2014-11-06 09:47:56

1

设置让init方法变量(常量):

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

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

我们可以用自己访问let变量。

希望它适合你。