If statement 表视图单元格中的Swift 2.0 if语句

If statement 表视图单元格中的Swift 2.0 if语句,if-statement,swift2,tableviewcell,If Statement,Swift2,Tableviewcell,我试图在表视图单元格中显示数组的内容。 我创建了数组(我有一个图像数组和三个字符串数组) 我设法显示了数组的内容,没有任何问题。 这是我的viewController.swift: class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var tableView: UITableView! var shopOpen: Bool = false v

我试图在表视图单元格中显示数组的内容。 我创建了数组(我有一个图像数组和三个字符串数组)

我设法显示了数组的内容,没有任何问题。 这是我的viewController.swift:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!

var shopOpen: Bool = false


var openSign: UIImage = UIImage(named: "open")!
var closedSign: UIImage = UIImage(named: "closed")!



var logos = [UIImage(named: "shop1"), UIImage(named: "shop2"), UIImage(named: "shop3")]
var programWorkingDays = ["Luni-Vineri:09:00-20:00", "Luni-Vineri::10:00-21:00", "Luni-Vineri:09:30-19:30"]
var programSambata = ["Sambata:10:00-16:00","Sambata:10:30-13:00" ,"Sambata: 09:00-13:00"]
var programDuminica = ["Duminica:10:00-15:00","Duminica:09:00-14:00","Duminica:10:30-15:00"]

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 3
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! Cell
    cell.logo.image = logos[indexPath.row]
    cell.programWorkingDays.text = programWorkingDays[indexPath.row]
    cell.programSambata.text = programSambata[indexPath.row]
    cell.programDuminica.text = programDuminica[indexPath.row]
    return cell
}
}

我的下一个目标是根据变量(shopOpen)的真/假值显示一个或另一个图像

如果变量为true,我想要图片1,如果为false,我想要图片2。 图像视图放置在main.storyboard中,并在cell类中建立连接

图像将存储在UIImage变量中(考虑到这部分我只有两个图像,我认为将它们放在数组中没有任何意义)


我应该在哪里写入if语句以及如何刷新单元格以显示正确的图像?

首先,参数的多个数组使用包含布尔
打开属性的结构

struct Shop {
  var workingDays : String
  var sambata : String
  var duminica : String

  var logo : UIImage?

  var open = false
}
ViewController
类中,将变量
Shop
声明为空
Shop
数组

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
  @IBOutlet weak var tableView: UITableView!

  let openSign: UIImage = UIImage(named: "open")!
  let closedSign: UIImage = UIImage(named: "closed")!

  var shops = [Shop]()
viewDidLoad
中,使用适当的
Shop
实例填充
Shop
数组

  override func viewDidLoad() {
    super.viewDidLoad()
    shops.append(Shop(workingDays: "09:00-20:00", sambata: "10:00-16:00", duminica: "10:00-15:00", logo: UIImage(named: "shop1"), open: true))
    shops.append(Shop(workingDays: "10:00-21:00", sambata: "10:30-13:00", duminica: "09:00-14:00", logo: UIImage(named: "shop2"), open: false))
    shops.append(Shop(workingDays: "09:30-19:30", sambata: "09:00-13:00", duminica: "10:30-15:00", logo: UIImage(named: "shop3"), open: true))
  }
numberofrowsin部分
返回店铺数量,而不是硬编码的整数

  func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return shops.count
  }
cellforrowatinexpath
中显示
Shop
实例中的值。假设存在图像视图
openImage
,根据
open
属性的状态显示打开或关闭图像

  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! Cell
    let shop = shops[indexPath.row]
    cell.logo.image = shop.logo
    cell.programWorkingDays.text = "Luni-Vineri: \(shop.workingDays)"
    cell.programSambata.text = "Sambata: \(shop.sambata)"
    cell.programDuminica.text = "Duminica: \(shop.duminica)"
    cell.openImage.image = shop.open ? openSign : closedSign
    return cell
  }
}

到目前为止你有什么?我编辑了我的第一篇文章。我真的不明白:cell.openImage.image=shop.open?openSign:closedSign(尤其是“?”符号)。我可以在单元生成过程中运行一个函数来检查车间的状态吗?我选择的机制如下:我使用nsdate将工作日获取为int,通过此方法和if语句,我可以了解我当前所处的日期(工作日、周六或周日)。然后我运行nsdate函数来获取小时和分钟。使用此信息,我为每个店铺设置打开或关闭选项。如果
open
属性为
true
,则该行将
openSign
分配给
cell.openImage.image
,否则
closedSign
。它是if-else的缩写形式,只需在模型中设置属性并重新加载表视图。