2016-04-11 12 views
0

テーブルビューセルに配列の内容を表示しようとしています。 私は配列を作成しました(私は1つの配列の配列と3つの配列の配列を持っています)。テーブルビューセル内のSwift 2.0 ifステートメント

私は問題のない配列の内容を表示することができました。 はここに私の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)

変数があれば真実です。私は画像1を持っていますが、それが偽であれば画像2を持っています。 画像ビューはmain.storyboardに置かれ、セルクラスに接続されています。私は書くべき画像がUIImage変数にSTORETされます

(私はこの部分のみのために2つのイメージを持っているという事実を考えると、私はそれは、アレイ内に置くためにどんな意味があるとは思わないが)

ifステートメントと正しい画像を表示するために、セルをリフレッシュする方法はありますか?

+0

あなたはこれまで何を持っていますか? – vadian

+0

私の最初の投稿を編集しました。 – SwatGuard

答えて

0

パラメータの複数のアレイがViewControllerクラスのboolean open

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

    var logo : UIImage? 

    var open = false 
} 

含む構造体を使用するのではなく、まず第一に、空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]() 

として可変shopsを宣言するviewDidLoadshopsアレイを適切な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)) 
    } 

numberOfRowsInSectionリターンショップの数よりもむしろcellForRowAtIndexPath表示Shopインスタンスからの値でハードコードされた整数

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

。イメージビュー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 
    } 
} 
+0

私は本当に理解していない:cell.openImage.image = shop.open? openSign:closedSignは(特に "?")します。店舗の状況を確認するためにセル生成プロセスの中で機能を実行できますか?私は選択したメカニズムは次のとおりです:私はこのメソッドとifステートメントで私は現在の昼間、土曜日または日曜日のどのような種類の日に見つけるintと曜日を取得するためにnsdateを使用しています。次に、nsdate関数を実行して時と分を取得します。この情報で、私は各店舗のオープンまたはクローズドオプションを設定しました。 – SwatGuard

+0

この行は、 'open'プロパティが' true'の場合は 'cell.openImage.image'に' openSign'を代入し、そうでない場合は 'closedSign'を代入します。これは 'if-else'の短縮形です。モデルのプロパティを設定し、テーブルビューをリロードしてください。 – vadian

関連する問題