2016-08-11 2 views
1

Ich verwende insgesamt 15 statische Zeilen in meiner UICollectionView. Wenn ich auf jedes Element klicke, navigiere ich zum zugehörigen UIViewController. Zuerst habe ich If-else benutzt, aber jetzt benutze ich das If-else nicht mehr. Ich benutze Schalter für das. Aber mein Zweifel ist für 15 Reihen ich schreibe 15 Fälle dafür. Aber ich möchte meinen Code reduzieren. Gibt es irgendeine Logik, um den Code zu reduzieren?Wie 15 Zeilen mit switch in swift angezeigt werden?

Mein Code in wie dis

switch(indexPath.row) 
    { 
    case 1: 

     break 

    case 2: 

     break 

    case 3 : 
    break 

     . 
     . 
     . 
    case 15 : 
    break 
    default : 
     print("default case") 

    } 

Kann jemand mir bitte helfen, dieses Problem zu lösen. Vielen Dank im Voraus ...

+0

Ich denke, wenn Sie das tun müssen, ist Ihre gesamte Logik verrückt. Versuchen Sie, alles, für das Sie 15 Fälle haben, in (eine) neue Klasse (n) einzubetten. – Eric

+1

assoziierte UIViewController sind für alles oder verschiedene auf jeden Fall gleich –

+0

Versuchen Sie Storyboard ID als 0,1,2 ... für Ihre 15 Storyboards zu verwenden. Und auf Element wählen Sie, dass viewController mit self.storyboard.instantiateViewControlerWithIdentifier –

Antwort

0

Speichern Sie die Ansicht Controller Identifier zu einem Array. Wenn Sie auf die Zelle klicken, rufen Sie den Bezeichner aus dem Array ab und drücken Sie den jeweiligen View-Controller.

let arrayTest : NSArray = ["test1", "test2"]// Declared this on view did load 

//Write below code on did select delegate method 
    let identifier = arrayTest.objectAtIndex(indexPath.row) 
    let viewController = UIStoryboard.instantiateViewControllerWithIdentifier(identifier) 
    self.navigationController?.pushViewController(viewController, animated: true) 
+0

Es zeigt Dis-Fehler "Kann Wert des Typs '(String) -> UIViewController' zu erwartetem Argument Typ 'UIViewController' nicht konvertieren ". Wenn ich den Code wie folgt ändern "identifier = arrayTest.objectAtIndex (indexPath.row) lassen lassen Viewcontroller = UIStoryboard.instantiateViewControllerWithIdentifier (Kennung als UIStoryboard!) self.navigationController .pushViewController (Viewcontroller, animiert: true)? " –

+0

Try der folgende Woring-Code: - lassen Sie arrayTest: NSArray = ["test1", "test2"] // Deklarierte dies auf Ansicht geladen Lassen Sie sich identifizieren: String = arrayTest.ObjectAtIndex (indexPath.row) as! String let mainStoryboard: UIStoryboard = UIStoryboard (Name: "Main", Bundle: nil) let viewController = mainStoryboard.instantiateViewControllerWithIdentifier (Bezeichner) as! ViewController self.navigationController? .pushViewController (viewController, animiert: true) – pkc456

+0

Es stürzt ab.Es zeigt den Fehler "Konnte den Wert des Typs 'Sales.OrderViewController' (0x14e578) nicht in 'Sales.ViewController" umwandeln. " –

Verwandte Themen