1

ObjC よりもはるかに優れているように見えるので、Swift の学習を開始しました。ただし、未定義のメンバーを呼び出そうとするとXcodeが叫ぶ理由がわからないため、疲れているに違いありません(現在、午前2時37分)。以下のコードを参照してください。

PeopleStackViewDataSource.swift

import Foundation
import UIKit

protocol PeopleStackViewDataSource {

    func stackViewNumberOfItems(stackView: PeopleStackView) -> Int
    func stackViewGetView(indexPath: NSIndexPath) -> UIView
}

PeopleStackView.swift

import Foundation
import UIKit

class PeopleStackView: UIView {

    var datasource: PeopleStackViewDataSource? {
    didSet {
        self.redraw()
    }
    }

    var scaleDownBy: Double = 0.1

    init(frame: CGRect) {
        super.init(frame: frame)

    }

    init(frame: CGRect, datasource: PeopleStackViewDataSource) {
        super.init(frame: frame);
        self.datasource = datasource;
    }

    func numberOfItems() -> Int {
        return self.datasource ? self.datasource.stackViewNumberOfItems(self) : 0
    }

    func redraw() {

    }


}

問題はreturn self.datasource ? self.datasource.stackViewNumberOfItems(self) : 0、Xcodeがそれを言うこの行ですstackViewNumberOfItems(self)

PeopleStackViewDataSource?」「stackViewNumberOfItems」という名前のメンバーがありません

では、問題はどこにあるのでしょうか。

4

1 に答える 1

3

問題は、

PeopleStackViewDataSource?' does not have a member named 'stackViewNumberOfItems

しかし、PeopleStackViewDataSourceそうです(に注意してください?

オプションの をアンラップする必要がありますdatasource

func numberOfItems() -> Int {
    if let ds = self.datasource {
        return ds.stackViewNumberOfItems(self)
    } else { return 0 }          
}
于 2014-06-05T00:53:46.777 に答える