2016-04-04 15 views
0

UITableViewCell içindeki bir etiketin içinde farklı dizeleri görüntülemek istediğim bir uygulama oluşturuyorum. Ancak, dizeler belirli bir sırada olmadığından, indexPath.row kullanamıyorum.Dinamik Etiket Değişiklikleri Oluşturmak İçin Tablo Görünümünü Değiştirme iOS Swift

let one = "This is the first quote" 
let two = "This is the second quote" 

var numberOfRows = 1 
var quoteNumber = 0 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let items = [one, two] 

    myTableView = tableView 

    let cell = tableView.dequeueReusableCellWithIdentifier("customcell", forIndexPath: indexPath) as! cellTableViewCell 
    let cellWidth = cell.frame.width 
    let cellHeight = cell.frame.height 

    cell.QuoteLabel.frame = CGRectMake(cellWidth/8, cellHeight/4, cellWidth/1.3, cellHeight/2) 

    let item = items[quoteNumber] 

    cell.QuoteLabel.text = item 
    cell.QuoteLabel.textColor = UIColor.blackColor() 
     if quoteNumber == 0 { 
      quoteNumber = 1 
     } 

    if numberOfRows == 1 { 
     numberOfRows = 2 
    } 

    return cell 

} 
override func viewDidLoad() { 
    super.viewDidLoad() 
    var timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "update", userInfo: nil, repeats: true) 

} 
func update() { 

dispatch_async(dispatch_get_main_queue()) { 
    self.myTableView.reloadData() 
} 

Bu kod oluşur ve çalışır ama belirledik zamanlayıcı süresi dolar ve güncelleme fonksiyonu ran edildiğinde, iki kullanılabilir hücrelerin her ikisi de aynı etikete değiştirin. Yapmaya çalıştığım şey, yeni eklenen hücrenin indexpath.row kullanmadan 'item' dizisinden yeni öğeyi alabilmesi için ilk hücrenin durağan kalmasını sağlamaktır (çünkü kullanacağım tırnaklar öğeler dizisi belirli bir sırada olmayacaktır). Herhangi bir yardım takdir edilecektir.

+0

Verileriniz sipariş aşamasında olmalı. Satırları başka nasıl düzgün görüntüleyebilirsiniz? Verileriniz indexPath tarafından dizine eklenebilmelidir. Bu gerçeğin etrafında dolaşmak yok. – rmaddy

cevap

1

reloadData yerine reloadRowsAtIndexPaths: kullanmayı deneyin ve yeniden yüklemek istediğiniz satırları geçirin. Ancak bu, indexPath'u kullanır. Tüm tabloya karşılık olarak belirli satırları yeniden yüklemenin farkında olduğum tek yolu, satırları dizin yoluna göre belirtmektir.

+0

Bunu kullanmayı denedim, ancak değiştirmeye çalıştığım ikinci satırın mevcut olmadığını belirten bir hata iletisi ile çöküyor. Benim tahminim, güncellemeden önce onu oluşturmanız gerektiğidir, ancak ikinci sıranın ilk satırın verileriyle doldurulmasını istemiyorum ... Herhangi bir öneri @ Hash88 –

+0

'tableView: numberOfRowsInSection: 'dan dönüyorsunuz ? Bu değer "1" ise, tablonuzun görünümü yalnızca bir hücreye sahip olur. – Hash88

+0

"UITableView" ile gerçekten 'hücreler' oluşturmuyorsunuz. "NumberOfSectionsInTableView:" ve "tableView: numberOfRowsInSection:" öğelerinde kaç tane bölüm ve satır istediğinizi belirtmeniz gerekir, ardından "tableView: cellForRowAtIndexPath:" öğesinde her bir hücreyi oluşturur (veya yeniden kullanır), ancak kullandığınız hücre sayısı orada belirtildi. – Hash88

İlgili konular