

Xcode7(Swift)で、PickerViewを設置(項目は２つ)して、部品下に遷移ボタンを置きます。  
PickerViewで２つの事柄を選択するとlabelに表示され、部品下にあるボタンを押すと、labelに表示された内容の詳細ページに遷移するというものなのですが

[code]

    var myUIPicker: UIPickerView = UIPickerView()
    var large: NSArray = ["A", "B", "C", "D"]
    var country: NSArray = ["World", "America", "China", "Japan", "India","UK"]
    
    @IBOutlet weak var myLabelFst: UILabel!
    @IBOutlet weak var myLabelSec: UILabel!
    @IBOutlet weak var myPicker: UIPickerView!
    override func viewDidLoad() {
        super.viewDidLoad()
    
    
    
        myUIPicker.frame = CGRectMake(0, 120, self.view.bounds.width, 180.0)
        myUIPicker.delegate = self
        myUIPicker.dataSource = self
        self.view.addSubview(myUIPicker)
    
    
        // Do any additional setup after loading the view.
    }
    
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return 2
    }
    
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if component == 0 {
            return large.count
        }else if component == 1 {
            return country.count
        }
        return 0;
    }
    
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if component == 0 {
            return large[row] as? String
        }else if component == 1 {
            return country[row] as? String
        }
        return "";
    }
    
    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if component == 0 {
            myLabelFst.text =
            ("\(large[row])")
        }else if component == 1 {
           myLabelSec.text =
            ("\(country[row])")
        }
    }
    
    @IBAction func showResult(sender: AnyObject) {
    }
    
[/code]

ここから例えば、"A × Japan"の画面へ。  
"C × World"の画面へのように、  
それぞれ選択した項目の画面へ遷移するようにしたいのですが、  
どういうコードの内容にすればできるのかが分かりません。  
調べてはみたものの複数項目からなるpickerviewでの画面遷移のやり方がいまいち分かりません。

情報足らずでしたら足りないところをできるだけ追加致しますので、宜しくお願い致します。  
またヒントみたいな事でも結構ですので教えていただければありがたいです。

よろしくお願い致します。


CC BY-SA 3.0
2015-11-14T07:09:16.353
18807
2015-12-16T09:11:27.773
2015-11-16T00:16:25.783
13251
13251
question
ios swift xcode iphone uipickerview
Storyboard Segueをプログラムで実行するには？


画面遷移について、Storyboardで、ボタンなどのコントロールから、遷移先のView
ControllerにSegueを引っ張ることで、プログラムコードを書かずに処理できるので、たいへん便利です。しかし、テーブルビューやピッカービューの選択行に応じて、遷移先のView
Controllerを、動的に変更しようと思うと、やはりなにかしらのコードは書かなければいけません。では、具体的にどのような作業を行えばいいのでしょうか？  
まず、ボタンからSegueを引っ張ると、遷移先が固定されるので、ボタンからでなくView ControllerからSegueを引っ張ります。

[![画像の説明をここに入力](https://i.stack.imgur.com/ZNVQl.png)](https://i.stack.imgur.com/ZNVQl.png)

つぎに、できあがったSegueを選択して、Attributes Inspectorを表示します。

[![画像の説明をここに入力](https://i.stack.imgur.com/yc5eu.png)](https://i.stack.imgur.com/yc5eu.png)

SegueにID（Identifier）をつけます。

[![画像の説明をここに入力](https://i.stack.imgur.com/V1fGY.png)](https://i.stack.imgur.com/V1fGY.png)

この作業を、遷移先のView Controllerの数だけ行います。  
そして、画面遷移を行うプログラムを書きます。`performSegueWithIdentifier`メソッドは、「IDが何々のセグエを実行せよ」という意味ですね。引数`sender`は、適当でいいですが、プログラムの構成によっては、意味を持つこともあります。

[code]

    @IBAction func showResult(sender: AnyObject) {
        performSegueWithIdentifier("AA", sender: self)
    }
    
[/code]

`"AA"`は、SegueのIDのことです。この`"AA"`を、ピッカービューの選択行におうじて、動的に変更してやれば、ピッカービューに連動して、遷移することができます。  
遷移先は、SegueのIdentifierのリストを作って、管理するのがいいでしょう。管理のしかたはいろいろあると思います。ここでは配列（`Array`）を使ってみましょう。  
遷移先「"A × Japan"の画面」のSegueのIDを"AJ"としましょう。ほかのIDも同様とします。

[code]

    let segueIDArray: [[String]] = [["AW", "AA", "AC", "AJ", "AI", "AU"],
    ["BW", "BA", "BC", "BJ", "BI", "BU"],
    ["CW", "CA", "CC", "CJ", "CI", "CU"],
    ["DW", "DA", "DC", "DJ", "DI", "DU"]]
    
[/code]

`[String]`は、文字列の配列を表す型で、`[[String]]`は、文字列の配列の配列を表す型です。いわゆる二次元配列というやつです。これで、largeのインデックス`large`とcountryのインデックス`country`を代入して、`segueIDArray[large][country]`で、要素（SegueのID）を取り出すことができます。


CC BY-SA 3.0
2015-11-16T08:49:17.497
18890
2015-11-16T08:49:17.497
7362
18807
answer