J'essaie d'étendre une fonction dans mon contrôleur de vue principal (func getCityWeatherData
) à la classe ci-dessous qui affiche uniquement les éléments définis dans certaines conditions.Swift3: Appeler les données de func du VC principal à TableVC pour les cellules conditionnelles
J'ai également marqué des données d'échantillon qui ont des critères à sélectionner - comment les séparer du tableau habituel? J'ai essayé ce que j'ai lu ailleurs, dans la section numberOfRowsAt
, mais je suis confus.
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
} }
C'est une cellule d'exemple que j'ai créé - Je veux que le « temps ... », mais de définir quand les émissions de poste.
guard let prod1 = Product(name: "XXX", photo: photo1, rating: 1, weather: "Humidity")
il est source de confusion, s'il vous plaît expliquer le problème en détail à nouveau – D4ttatraya
@ D4ttatraya J'ai données à partir d'un API de temps dans 'ViewController', mais j'ai aussi besoin d'y accéder dans' ProductRecsTableViewController'. Comment je fais cela –
@ J.M. Vous devriez envisager de séparer l'accès à votre API météo dans son propre objet Modèle. Si vous mettez tout le poids de l'accès réel aux données de l'API, vous pouvez faire quelque chose comme 'let weatherApi = WeatherApi(), laissez currentWeather = weatherApi.getWeather()'. Votre contrôleur devrait être responsable d'obtenir des données du modèle et de le donner à la vue. Toutefois, de nombreux contrôleurs peuvent partager un seul modèle, ce qui vous aidera à résoudre le problème actuel de réutilisation d'une fonction sur deux contrôleurs de vue. –