2016-01-09 20 views
9

3D Touch'ı kullanmanın çok kolay bir yolunu buldum - storyboard'da "Peek & Pop" seçeneğini işaretleyin. Ama bir sorunla uğraşıyorum.3D Touch'ı storyboard'un göz atma ve pop ile kullanma

kullanıcı tüm kodu ile ok çalışıyor hücreyi değdiğinde UITableView var:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showDetail" { 
     print(tableView.indexPathForSelectedRow) 
    } 
} 

Yani seçilen satır dayalı benim Detaylı denetleyicisi verileri dolduruyorum. Ama ben Peek veya Pop yöntemi tableView.indexPathForSelectedRow her zaman nil dönüş (hm .. Ben satır seçmedim, ben sadece indexPath önizleme olduğunu tahmin ediyorum nil sanırım). Bu "peeked" hücre indexPath'ı segeye iletmek için nasıl alabilirim?

Ya da storyboard'un Peek & Pop bu basit şekilde çalışmaz ve kodumdaki peek & pop'i tam olarak uygulamam gerekiyor mu?

cevap

15

Film şeridini ve prepareForSegue'u kullanarak tam olarak uygulamak mümkündür. sender nesnesini kullanarak bunu yapabilirsiniz.

Segmanınızı doğrudan storyboard'daki tablo hücresinden bir sonraki görünüm denetleyicisine yarattığınızı varsayarak, gönderici nesnesi UITableViewCell türünde olacaktır. Programlı olarak segue'i tetiklerseniz, yöntem çağrısında sender nesnesini ayarlamayı unutmayın.

Sen tableView aşağıdaki benzer bir şey NSIndexPath bir tutun almak için bu hücreyi kullanabilirsiniz

(unwrapping tüm kuvvet görmezden bu gösteri amaçlı adildir):

override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) { 
    let cell = sender as! UITableViewCell 
    let indexPath = tableView.indexPath(for: cell)! 
    if segue.identifier == "mySegue" { 
     let destination = segue.destination as! DetailsViewController 
     destination.model = self.model[indexPath.row] 
    } 
} 
İlgili konular