【发布时间】:2017-07-12 18:44:50
【问题描述】:
我正在尝试将我的主视图控制器 (func getCityWeatherData) 中的一个函数扩展到下面的类,该类仅在某些条件下显示设置项。
我还标记了需要选择一些标准的示例数据 - 我如何将它们与通常的数组分开?我试过我在其他地方读到的东西,在 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")
【问题讨论】:
-
比较混乱,请再详细说明问题
-
@D4ttatraya 我在
ViewController中有来自天气API 的数据,但我还需要在ProductRecsTableViewController中访问它。我该怎么做 -
@J.M.您应该考虑将对天气 API 的访问分离到它自己的模型对象中。如果您将实际访问 API 数据的所有繁重工作都放在了那里,那么您可以执行
let weatherApi = WeatherApi(), let currentWeather = weatherApi.getWeather()之类的操作。您的控制器应该负责从模型中获取数据并将其提供给视图。但是,许多控制器可能共享一个模型,这将帮助您解决当前尝试跨两个视图控制器重用函数的问题。 -
@JoshuaBreeden 谢谢,我还没有听说过。我现在看看。好像可以减轻我的负担。
-
@J.M.如果您刚刚开始,我会向您推荐 Apple 的免费电子书“App Development with Swift”。它不仅介绍了 Swift 语言的语法,还介绍了一些推荐的设计模式,这些模式将帮助您合理地布局您的应用程序。我正在谈论的这个特殊概念称为模型视图控制器或 MVC。
标签: swift swift3 tableview viewcontroller