2015-07-27 19 views
9

Uygulamamın kategorileri var ve bu kategoriler sonsuz alt kategorilere veya videolara sahip olabilir. Ana Görünüm kontrol cihazım hücreler ile bir araya gelerek. Bir kategori seçtiğimde, kategori alt kategorilere sahipse, alt kategorilerle ilk olarak başka bir görünüm denetleyicisi oluşturun, ancak kategorisinde videolar başka bir görüntü denetleyicisine giderse buna ihtiyacım var.Görüntü denetleyiciden kendisine bir segue nasıl oluşturulur

i benim asıl görünümü denetleyicisi benim hücrelerinden iki segues gerektiğini düşünüyorum:

bunlardan
  • bir zekâ hedef videoları göstermek için kontrolörünü tüm alt kategorilerini
  • daha buna gidin kendini görmek göstermek.

Ses denetleyicimin hücresinden bir işaretçiyi kendime sürüklemek istiyorum. Bu yüzden, o belirli görüntü denetleyicisinin "sonsuz" örneklerini (tüm olası alt kategoriler için) zorlayabilirim.

Ancak bir denetleyicinin görüntü denetleyicisinden kendisini nasıl sürüklediğini bilmiyorum. ikinci bir segue xcode sürüklemeye çalıştığımda ilk segue silindi.

Teşekkürler arkadaşlar.

+0

Görünüm denetleyicisini, kod içinde oluşturmalı ve segue'yi oluşturmak yerine kodunuzda göstermeli/göstermelisiniz. – Greg

+0

Bunun yerine, benim preforme -segue işlevimde bir segue gerek yok? –

+0

Dün aynı şeyi sormadınız mı? Bakınız: http://stackoverflow.com/questions/31640508/how-to-create-a-segue-from-view-controller-to-itself –

cevap

7

Sadece koddan özel bir işaret oluşturun. Öyleyse, storyboard'ları kullanırken sadece bir segue ile sınırlı değilsiniz.

UIViewController *toViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"OtherViewControllerId"]; 
MyCustomSegue *segue = [[MyCustomSegue alloc] initWithIdentifier:@"" source:self destination:toViewController]; 
[self prepareForSegue:segue sender:sender]; 
[segue perform]; 

veya kimliğine sahip bir görünüm denetleyicisi oluşturmak ve hücre didSelectRowAtIndexPath yılında dokunulduğunda Sen segue kaldırıp VC oluşturmak ve bunu itmek için kod eklemem gerekir o

UIViewController *myController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyController"]; 
[self.navigationController pushViewController: myController animated:YES]; 
+0

Swift'de bunu nasıl yapabilirim? – scaryguy

0

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!){ 

    // Create your view controller and push it 
    // pass data if needed 
    self.navigationController.pushViewController(yourViewController, animated: YES); 
} 
Swift bir cevap @ MaciekWrocław

let destinationViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DestinationViewController") 

let segue = UIStoryboardSegue(identifier: "SegueToProfileViewController", 
             source: self, 
             destination: anotherProfileVC, 
             performHandler: { 
               self.navigationController?.show(anotherProfileVC, sender: self) 
     }) 

     self.prepare(for: segue, sender: user) 
sege.perform() 
01 dayanmaktadır
0

Swift 4:

Öncelikle, bir yerde senin kod temeli UIViewController bu sınıf uzantısını ekleyin:

extension UIViewController { 
    class func storyboardInstance(storyboardId: String, restorationId: String) -> UIViewController { 
     let storyboard = UIStoryboard(name: storyboardId, bundle: nil) 
     return storyboard.instantiateViewController(withIdentifier: restorationId) 
    } 
} 

Sonra (yukarıdaki uzantısını kullanarak) YourViewController sınıfının bir örneğini ve yerden buna aktarmayacağından navigationController:

let destinationVC = YourViewController.storyboardInstance(storyboardId: "YourStoryboardName", restorationId: "idYouSetInStoryboard") as! YourViewController 
self.navigationController?.pushViewController(destinationVC, animated: true) 
İlgili konular