2016-04-11 17 views
0

Tablo görünüm hücrelerindeki bir dizinin içeriğini görüntülemeye çalışıyorum. Dizileri oluşturdum (bir dizi görüntü ve üç dizi dizim var).Swift 2.0 tablo görünüm hücresindeki ifadesi

Dizilerin içeriğini herhangi bir sorun olmadan görüntülemeyi başardım. İşte benim viewController.swift geçerli:

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 
} 

}

Bir sonraki hedefi değişkenin doğru/yanlış değerine dayalı bir resim veya başka göstermektir (shopOpen)

değişken ise doğruysa resim 1 istiyorum, eğer yanlışsa resim 2 istiyorum. Görüntü görüntüsü main.storyboard'a yerleştirilir ve bağlantı hücre sınıfında yapılır.

görüntülerin

i yazmalısınız

(ben sadece ben bir diziye içine koymak için herhangi bir mantıklı sanmıyorum, bu bölümü için iki görüntü olduğu gerçeği göz önüne alındığında) UIImage değişkenleri storet edilecektir if deyimi ve doğru görüntüyü görüntülemek için hücreleri nasıl yenilerim? parametreler için birden fazla diziler boş Shop dizi

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]() 

olarak değişken shops ilan ViewController sınıfında bir Boole open özelliği

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

    var logo : UIImage? 

    var open = false 
} 

içeren bir yapı kullanmak yerine tüm

+0

Şimdiye kadar neler var? – vadian

+0

İlk gönderiimi düzenledim. – SwatGuard

cevap

0

İlk olarak, viewDidLoad'da shops dizisini uygun Shop örnekleriyle doldurun

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)) 
    } 

numberOfRowsInSection karşılık mağaza sayısı yerine cellForRowAtIndexPath ekran Shop örneklerden değerleri olarak kodlanmış bir tamsayıdır

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return shops.count 
    } 

. Görüntü görüntüsü openImage olduğu varsayıldığında, open özelliğinin durumuna bağlı olarak açık veya kapalı görüntü görüntülenir.

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 
    } 
} 
+0

Gerçekten ne olduğunu anlamıyorum: cell.openImage.image = shop.open? openSign: closedSign yapar (özellikle "?"). Mağazanın durumunu kontrol etmek için hücre üretim sürecinin içinde bir işlev çalıştırabilir miyim? Seçtiğim mekanizma şu şekildedir: nsdate'i hafta içi bir int olarak almak için kullanıyorum, bu yöntemle ve şu anda hangi günde çalıştığım bir if ifadesiyle (çalışma günü, cumartesi veya pazar günü). Sonra saat ve dakika almak için nsdate işlevlerini çalıştırıyorum. Bu bilgi ile her dükkan için açık veya kapalı seçeneği ayarlıyorum. – SwatGuard

+0

Satır, "open" özelliği "true" ise "closedSign" ise "openSign" öğesini "cell.openImage.image" olarak atar. 'If ​​- else' için kısa bir form. Sadece modeli modele ayarladıktan sonra tablo görünümünü yeniden yükleyin. – vadian

İlgili konular