1つのSegmentedControlを含むViewControllerが1つあります.3つのセグメントとTableViewとCollectionViewがあります。セグメントが選択されると、最初の2つのセグメントは2つの異なるカスタムTableviewCellでTableViewを示し、最後にはCollectionViewが表示されます。各segemetを選択すると、データをダウンロードしてTableViewまたはCollectionViewに移入するためのネットワーク関数が呼び出されます。最初のセグメントのTableViewがデフォルトで表示されます。問題は、私がアプリケーションを起動するとき、それが何のデータも設定されていないので、アプリケーションがnumberOfItemsInSection関数でクラッシュすることです。私はこの関数がデータソースとして呼び出され、CollectionViewの代理プロパティが 'self'(ViewController)として設定されていると思います。この問題を解決するにはどうすればよいですか?一度、その後UITableViewとUICollectionViewを含むUISegmentedControl
class ViewController : UIViewController, UITableViewDataSource, UITableViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate {
// note that I would recommend separating these into extensions on ViewController
var htmlResponses = []()
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return htmlResponses.count
// htmlResponses is empty at this point
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return htmlResponses.count
// htmlResponses is empty at this point
}
}
:あなたは、最初はそうのような内容を持たないために、テーブルとコレクションビューを設定することができるように
oh..Thanks。私はこのような配列変数を宣言するのを忘れてしまった。例)var htmlResponse:[クラスタイプ]!私はそれを変更し、今すぐ動作します。 – woogii