2016-08-11 5 views
1

私は私のUICollectionViewで15の静的な行を使用しています。各項目をクリックすると、関連するUIViewControllerにナビゲートします。まず、If-elseを使用しましたが、今はIf-elseを使用しません。私はそれのためにスイッチを使用しています。しかし、私の疑いは15行を書いています。しかし、私は自分のコードを減らしたい。コードを減らすロジックはありますか?スイッチを使って15行を迅速に表示する方法は?

私のコードはDIS

switch(indexPath.row) 
    { 
    case 1: 

     break 

    case 2: 

     break 

    case 3 : 
    break 

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

    } 

のように誰もがこの問題を解決するために私を助けてください。 ありがとうございました...

+0

あなたがそうしなければならないとすれば、あなたの全体的なロジックは駄目です。あなたが15の場合があるものを(a)新しいクラスにカプセル化してみてください。 – Eric

+1

関連付けられたUIViewControllerは、すべてのケースで同じか異なる場合があります。 –

+0

15個のストーリーボードで、ストーリーボードIDを0,1,2として使用してみます。そして項目selectには、self.storyboard.instantiateViewControlerWithIdentifierを使用してそのviewControllerを取得します –

答えて

0

ビューコントローラのIdentifierをアレイに保存します。セルをクリックすると、配列から識別子を取得し、特定の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

これは、「 '(文字列) - > UIViewController'の値を 'UIViewController' " –

+0

試してください:私はこのようなコードを変更する場合は、 "? 識別子= arrayTest.objectAtIndexを(indexPath.row) のViewController = UIStoryboard.instantiateViewControllerWithIdentifier(!UIStoryboardなどの識別子) self.navigationControllerを聞かせて.pushViewController(真のViewControllerは、アニメーション)しましょう"次のワーニングコード: let arrayTest:NSArray = ["test1"、 "test2"] //これは宣言されましたload let identifier:String = arrayTest.objectAtIndex(indexPath.row)as! String mainStoryboard:UIStoryboard = UIStoryboard(名前: "Main"、バンドル:なし) viewController = mainStoryboard.instantiateViewControllerWithIdentifier(identifier)を次のようにします。 – pkc456

+0

これはクラッシュしています。「Sales.OrderViewController(0x14e578)型の値を 'Sales.ViewController'にキャストできませんでした」というエラーが表示されます。 –

関連する問題