Ben bir hikaye tahtası olmadan bir uygulama var, tüm UI oluşturma kodu yapılır ve ben iPhone için kullanılabilir hale getirmek bir splitView
var, çünkü uygulama sadece iPad için tasarlanmış olduğu için, bu yüzden Ana görünümde listede bir satır seçtiğinizde iPhone'da hiçbir şey yapmaz ancak iPad'de iyi çalışıyordur.Oluşturmak ve storyboard olmadan segue gerçekleştirmek
Sorularım, didSelectRowAtIndexPath
yönteminde Ayrıntı Görünümünü göstermeye izin veren bir segue oluşturabilir ve gerçekleştirebilir miyim?
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let segue = UIStoryboardSegue(identifier: "test", source: self, destination: detailViewController!)
performSegueWithIdentifier("test", sender: self)
}
ancak çalışan ve uygulama anlatıyorum çökmesini bir satır seçerken ben bu ilave yüzden performhandler gerekli:: şimdi
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let segue = UIStoryboardSegue(identifier: "test", source: self, destination: detailViewController!, performHandler: {() -> Void in
let object = self.fetchedResultsController.objectAtIndexPath(indexPath)
let controller = self.detailViewController!
controller.detailItem = object
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = true
})
performSegueWithIdentifier("test", sender: self)
}
ve burada
i şimdiye kadar yaptığın şey Bir satır xcode seçerken böyle bir tanımlayıcı "test" ile herhangi bir segue olmadığını söylüyor. Ben desegue.perform()
tarafından diyoruz ve prepareForSegueMethod içine performHandler içerik eklemek çalıştı:
if segue.identifier == "test" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let object = self.fetchedResultsController.objectAtIndexPath(indexPath)
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
controller.detailItem = object
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = true
}
}
ve sadece ben Seçili satırı vurgulayın düşmezse, sadece hiçbir şey yapmaz ve hepsi
varBana yardım edebilir misiniz?
DÜZENLEME: Oleg Gordiichuk söylediği gibi, bu, ben görsel senaryoları olmadan yapmak istediğini yapmak mümkün değildir bu yüzden onun yardımıyla :) buna anlamak mümkündür film şeridi etkileşimin bileşenidir Segue
Teşekkür
didSelectRow
yöntemi kullanmak, ben pushViewController ile çalıştı ve bu görünümü değiştirme ve iPhone'lar 6 sorunlara neden oldu Manzara modundayken Plus ve 6S Plus. Çözümünüz benim için çalışmaz, çünkü herhangi bir storyboard'um yok, bu yüzden self.storyboard her zaman nil değerini döndürür, ancak splitView içindeki iki kontrolörün AppDelegate dosyasına referanslarını aldım ve hala çalışmıyor "uygulama denendi aktif bir kontrol cihazını kullanıma sunmak " – EddyWGörüntüleme denetleyicilerini üzerinde göstermek için gezinme denetleyicisini kullanın. –
aşağıdakilerle çalıştı: let navC = UINavigationController (rootViewController: shared.mediaListController) kendiliğinden.presentViewController (navC, canlandırılmış: true, completion: nil) Ve işe yarıyor ama neye benzediğimi değil ^^ 'sadece detay görünümü iPhone'larda ana/ayrıntı görünümündeki xcode örneğinde olduğu gibi göstermek istiyorum – EddyW