2014-06-17 19 views
14
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 
    @IBOutlet 
    var tableView: UITableView 
    var items: String[] = ["We", "Heart", "Swift"] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "myCell") 
    } 


    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { 
     return self.items.count; 
    } 

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { 

     var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("myCell") as UITableViewCell 

     cell.textLabel.text = self.items[indexPath.row] 
     cell.accessoryType = UITableViewCellAccessoryType.DetailDisclosureButton 
     cell.selectionStyle = UITableViewCellSelectionStyle.Blue 
     tableView.separatorStyle = UITableViewCellSeparatorStyle.None 
     return cell 
    } 

    func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { 
     println("You selected cell #\(indexPath.row)!") 

    } 
} 

Sorunum, aksesuarType ve selectionStyle'ın değiştirilmemesidir. tableView.separatorStyle, cell.textlabel.text dosyasının yanı sıra değiştirilir. Bunu nasıl düzeltebilirim? seçildiğindeSwift tableView hücre seti aksesuarı türü

+0

Not: 'tableView: cellForRowAtIndexPath:' muhtemelen 'tableView.separatorStyle' ayarlamak için doğru yer değil. Ben viewWillAppear' 'kod satırını hareket edeceğini, hatta arayüz oluşturucu ayarlamayı deneyin (Ben son Xcode erişimi yok, o yüzden hızlı bir denemeye olamaz). – dasblinkenlight

cevap

21

UITableViewCellSelectionStyleBlue

hücre varsayılan bir arka plan rengi vardır. iOS 7'de

, renkli seçim artık mavidir. Bunun yerine UITableViewCellSelectionStyleDefault kullanın.

accessoryType'a gelince, daha sonra başka bir yerde değiştirmediğiniz sürece iyi çalışmalıdır. Tablo genişliğinin doğru olduğundan emin olun, aksi halde aksesuar görünümleri ekran dışında olabilir. viewDidLoad: Nitekim yerine, hücre her istendiğinde tablonun separatorStyle set tableView yüklendiğinde bir kere yapmak için iyi bir çözüm olmadığını

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    @IBOutlet 
    var tableView: UITableView 

    var items: String[] = ["We", "Heart", "Swift"] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "myCell") 
    } 


    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { 
     return self.items.count; 
    } 

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { 

     var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("myCell") as UITableViewCell 
     cell.textLabel.text = self.items[indexPath.row] 
     cell.selectionStyle = UITableViewCellSelectionStyle.Blue 

     /* 
     enum UITableViewCellAccessoryType : Int { 
     case None // don't show any accessory view 
     case DisclosureIndicator // regular chevron. doesn't track 
     case DetailDisclosureButton // info button w/ chevron. tracks 
     case Checkmark // checkmark. doesn't track 
     case DetailButton // info button. tracks 
     } 
     */ 

     // Standard options 
     cell.accessoryType = UITableViewCellAccessoryType.None 
     cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator 
     cell.accessoryType = UITableViewCellAccessoryType.DetailDisclosureButton 
     cell.accessoryType = UITableViewCellAccessoryType.Checkmark 
     cell.accessoryType = UITableViewCellAccessoryType.DetailButton 

     // Custom view options 
     cell.accessoryType = UITableViewCellAccessoryType.None 
     cell.accessoryView = UIView(frame: CGRectMake(0, 0, 20, 20)) 
     cell.accessoryView.backgroundColor = UIColor.blueColor() 

     return cell 
    } 

    func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { 
     println("You selected cell #\(indexPath.row)!") 

    } 
} 

Not.

, ben aynı sorunu cell.accessoryType = IUTableViewCellAccessoryType.Checkmark
+0

Aksesuar tipini değiştirmek istiyorum. Nasıl değiştirebilirim? (ve nerede?) – user3748930

+0

'UITableViewCellAccessoryType' enum'da bulunan herhangi bir seçeneği belirleyebilirsiniz. Özel bir aksesuar görünümü istiyorsanız, "UITableViewCell" öğesinin "accessoryView" özelliğinden yararlanın. –

+0

Hücre için bir sınıf oluşturmalı mıyım? – user3748930

1
Bu konuda benim deneyim paylaşmak istiyorum

vardı Ve ben tableview kısıtlamaları yoktu fark ettim ben değil mi'

6

benim için çalıştı ardından kısıtlamaları eksik eklendi t herhangi bir şans, cellForRowAtIndexPath yönteminde ayarlayarak o görünmüyor konuyu sabit willDisplayCell taşıyarak var.

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 
    cell.accessoryType = .DisclosureIndicator 
}