メインビューコントローラ(func getCityWeatherData
)の関数を、特定の条件下で設定された項目のみを表示する下のクラスに拡張しようとしています。Swift3:条件付きセルのメインVCからTableVCにfuncデータを呼び出します
私はまた、いくつかの基準が選択されているサンプルデータをマークしました。それらを通常のアレイからどのように分離するのですか?私はnumberOfRowsAt
セクションのどこかで読んだことを試しましたが、私は混乱しています。
class ProductRecsTableViewController: UITableViewController {
//Mark: Properties
var products = [Product]()
override func viewDidLoad() {
super.viewDidLoad()
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if getCityWeatherData.humidity < 50 {
return productsHumidity.count
} else {
return products.count
} }
これは、私が作成したサンプルセルである - 私が欲しい「天気:...」が、項目が示す場合に定義します。
guard let prod1 = Product(name: "XXX", photo: photo1, rating: 1, weather: "Humidity")
それは混乱だ、詳細に問題を説明してください、あなたの内側
myProductsRectsTableViewController.delegate = self
を言う必要がある。この過程の中でいくつかの点では、再び – D4ttatrayaD4ttatraya @私はからのデータを持っています気象APIを 'ViewController'に追加しましたが、' ProductRecsTableViewController'でもアクセスする必要があります。どうすればいいですか? –
@ J.M。天気APIへのアクセスを独自のModelオブジェクトに分離することを検討する必要があります。実際にそこにAPIデータにアクセスすることを重くすると、 'let weatherApi = WeatherApi()、currentWeather = weatherApi.getWeather()'のようにすることができます。コントローラは、モデルからデータを取得し、それをビューに渡す必要があります。しかし、多くのコントローラが単一のモデルを共有することがあります。これは、現在の2つのビューコントローラ間で関数を再利用しようとする際の問題に役立ちます。 –