私は14種類のビューを表示しているカスタムセルを持っています。セルが受信しているデータに応じて、いくつかのデータの数に等しいビューが表示され、どのデータであるかによって色が変わる必要があります。例えばUITableViewからの表示が消えています
:
それは3つのタイプのデータを受信している場合は、それが唯一の3つのビューを表示する必要があります。 ice cream, candy, marshmellows
とすることができます。次に、それはorange (ice cream), blue (candy), green (marshmellows)
に3つのビューを表示します。
私はそれをうまく機能させました。私はそれに興奮しています。問題は、3つのビューを表示しているセルを1つのビューのみを含むセルにスクロールすると、最初に3つのビューを表示する最初のセルまでスクロールすると、それは唯一の私は例を持っている...
を1、最初のものを示す:ストーリーボードで
マイカスタムセルは、このようなものです、緑と黒のボックスは異なるビュー
私はその後、1つのビューを含むセルまでスクロールすると、6つのビューのセルは、その後、このようになります。
私はコードを説明してみましょう:
をここにいくつかの関連するコードです。私のデータベースでは、すべての投稿には1または2のカテゴリがあります。これは、コードが探しているものです(update.category)。カテゴリ1の場合は、単なるテキストです。それがカテゴリ2(または何か他のもの)の場合は、ビューを表示する必要があります。実際には、私のUITableViewController内のセルのタイプにする必要があります。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let update = updates[indexPath.row]
if update.category == 1 {
let cell:updateTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! updateTableViewCell
cell.nameButton.setTitle(update.addedByUser, forState: .Normal)
return cell
} else {
let cellSugar:newSugarTableViewCell = tableView.dequeueReusableCellWithIdentifier("CellSugar", forIndexPath: indexPath) as! newSugarTableViewCell
cellSugar.nameButton.setTitle(update.addedByUser, forState: .Normal)
let sugarArray = update.content.componentsSeparatedByString("--")
dispatch_async(dispatch_get_main_queue(), {() -> Void in
cellSugar.sugarViewOne.layer.cornerRadius = cellSugar.sugarViewOne.frame.size.width/2
cellSugar.sugarViewOne.clipsToBounds = true
cellSugar.sugarViewOne.layer.borderColor = UIColor.whiteColor().CGColor
cellSugar.sugarViewOne.layer.borderWidth = 2.0
cellSugar.sugarViewTwo.layer.cornerRadius = cellSugar.sugarViewTwo.frame.size.width/2
cellSugar.sugarViewTwo.clipsToBounds = true
cellSugar.sugarViewTwo.layer.borderColor = UIColor.whiteColor().CGColor
cellSugar.sugarViewTwo.layer.borderWidth = 2.0
})
if sugarArray.count == 1 {
dispatch_async(dispatch_get_main_queue(), {() -> Void in
let seperateSugarArray = sugarArray[0].componentsSeparatedByString("#")
if seperateSugarArray[4] == "Candy" {
cellSugar.sugarViewOne.backgroundColor = UIColor(red: 97.0/255.0, green: 194.0/255.0, blue: 231.0/255.0, alpha: 1.0) // Blå
} else if seperateSugarArray[4] == "Ice cream" {
cellSugar.sugarViewOne.backgroundColor = UIColor(red: 35.0/255.0, green: 117.0/255.0, blue: 147.0/255.0, alpha: 1.0) // Mørke grå/blå
} else if seperateSugarArray[4] == "Marshmellows" {
cellSugar.sugarViewOne.backgroundColor = UIColor(red: 75.0/255.0, green: 212.0/255.0, blue: 159.0/255.0, alpha: 1.0) // Tyrkis
}
cellSugar.sugarViewTwo.hidden = true
cellSugar.sugarViewThree.hidden = true
cellSugar.sugarViewFour.hidden = true
cellSugar.sugarViewFive.hidden = true
cellSugar.sugarViewSix.hidden = true
cellSugar.sugarViewSeven.hidden = true
cellSugar.sugarViewEight.hidden = true
cellSugar.sugarViewNine.hidden = true
cellSugar.sugarViewTen.hidden = true
cellSugar.sugarViewEleven.hidden = true
cellSugar.sugarViewTwelve.hidden = true
cellSugar.sugarViewThirteen.hidden = true
cellSugar.sugarViewFourteen.hidden = true
})
} else if sugarArray.count == 2 {
dispatch_async(dispatch_get_main_queue(), {() -> Void in
let seperateSugarArray = sugarArray[0].componentsSeparatedByString("#")
let seperateSugarArrayTwo = sugarArray[1].componentsSeparatedByString("#")
if seperateSugarArray[4] == "Candy" {
cellSugar.sugarViewOne.backgroundColor = UIColor(red: 97.0/255.0, green: 194.0/255.0, blue: 231.0/255.0, alpha: 1.0) // Blå
} else if seperateSugarArray[4] == "Ice cream" {
cellSugar.sugarViewOne.backgroundColor = UIColor(red: 35.0/255.0, green: 117.0/255.0, blue: 147.0/255.0, alpha: 1.0) // Mørke grå/blå
} else if seperateSugarArray[4] == "Marshmellows" {
cellSugar.sugarViewOne.backgroundColor = UIColor(red: 75.0/255.0, green: 212.0/255.0, blue: 159.0/255.0, alpha: 1.0) // Tyrkis
}
if seperateSugarArray[4] == "Candy" {
cellSugar.sugarViewTwo.backgroundColor = UIColor(red: 97.0/255.0, green: 194.0/255.0, blue: 231.0/255.0, alpha: 1.0) // Blå
} else if seperateSugarArray[4] == "Ice cream" {
cellSugar.sugarViewTwo.backgroundColor = UIColor(red: 35.0/255.0, green: 117.0/255.0, blue: 147.0/255.0, alpha: 1.0) // Mørke grå/blå
} else if seperateSugarArray[4] == "Marshmellows" {
cellSugar.sugarViewTwo.backgroundColor = UIColor(red: 75.0/255.0, green: 212.0/255.0, blue: 159.0/255.0, alpha: 1.0) // Tyrkis
}
cellSugar.sugarViewThree.hidden = true
cellSugar.sugarViewFour.hidden = true
cellSugar.sugarViewFive.hidden = true
cellSugar.sugarViewSix.hidden = true
cellSugar.sugarViewSeven.hidden = true
cellSugar.sugarViewEight.hidden = true
cellSugar.sugarViewNine.hidden = true
cellSugar.sugarViewTen.hidden = true
cellSugar.sugarViewEleven.hidden = true
cellSugar.sugarViewTwelve.hidden = true
cellSugar.sugarViewThirteen.hidden = true
cellSugar.sugarViewFourteen.hidden = true
})
}
return cellSugar
}
}
私はあなたが理解し、それはあなたがそれぞれの条件のすべての要素を更新する必要が
@ Mr.UB私は関連するコードを追加しました。ビューを含んでいる部分はelse部分にあり、if update.category == 1ではなく、それはテキストを持つセルだけです。 –
私はそれを追加しました:-) –
もし 'update.category == 1 {'の 'else'部分が' return cell'を含んでいません。 –