2016-08-09 35 views
2

私は100%これがここに属しているとは確信していませんが、私は助けが必要です。スウィフトの異なるクラスの店舗へのアクセス

基本的に、私は、ファイルの3セットがあります。 ストーリーボードのViewController ViewControllerを ペン先>コントローラー ペン先>コントローラー

/wのストーリーボードtableviewcontroller負荷テーブルセルとしてニブのいずれかを、他はただ眺めていますこれはメインのストーリーボードビューの上部に追加されます。私がやっているものを説明しようとする

が、ここでのコードは次のとおりです。

let pickerView = UINib(nibName: "DateTimePickerView", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! DateTimePickerView 

    let testFrame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 200) 

    pickerView.frame = testFrame 
    ReserveView.addSubview(pickerView) 
    pickerView.translatesAutoresizingMaskIntoConstraints = false 

    NSLayoutConstraint(item: pickerView, attribute: .Leading, relatedBy: .Equal, toItem: view, attribute: .LeadingMargin, multiplier: 1.0, constant: 0).active = true 

    NSLayoutConstraint(item: pickerView, attribute: .Trailing, relatedBy: .Equal, toItem: view, attribute: .TrailingMargin, multiplier: 1.0, constant: 0).active = true 

    NSLayoutConstraint(item: pickerView, attribute: .Bottom, relatedBy: .Equal, toItem: view, attribute: .BottomMargin, multiplier: 1.0, constant: 0.0).active = true 

これが表示されるビューの下にペン先を追加します。私はこれを達成しようとしています:

テーブルセルとしてロードされているもう1つのペンです:私は、ビューの上に描画されるpickerViewから対話したいボタン、ラベルなどがあります。

うまくいけば、このイメージは、私がやろうとしていることを明確にするのに役立ち、なぜこれが間違っているのかを教えてくれるでしょう。

最後に、「pickerView」はボタンのクリックに表示され、ユーザーが日付を選択して確定すると非表示になります。ここで

写真です: ここ Drawing of what I tried to describe

は、実際のプロジェクトですので、あなたはより良い私がしようとしているかを見ることができます。 Actual Project SS

答えて

0

を、私はあなたがロードストーリーボードを持って理解して何からペンブロックにはtableViewとセルが、ピッカービューにはペン先が表示されます。

ストーリーボードにtableviewへの参照と変更が必要なコンテンツがある場合は、closuresとpickerviewを使用できます。あなたのpickerviewで

次の行を追加します。ストーリーボードクラスで

var didChange: ((value: String)->())? 

次のコードを追加します。ちょうどaddSubviewの上に以下を追加し、あなたのピッカービューを初期化

func pickerDidChange(value: String) { 
    debugPrint("The picker changed") 
} 

を:

pickerView.didChange = pickerDidChange 

今、あなたのpickerDidChange funcを使用すると、必要なデータを取得し、それを参照したtableViewのセルに適用します。

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    if let didChange = didChange { 
     didChange("something") 
    } 
} 

あなたが代わりにUIDatePickerを使用してしまう場合は、その後、私はより適切であろう推測た...代わりにNSDateを返す:あなたはのonChangeメソッドに次のように追加しますpickerviewで

私はあなたの質問を正しく理解してこれがあなたの問題を解決することを希望します。

+0

私はちょっと混乱しています。私のchangeイベントのIBActionでは、その関数pickerViewを追加することになっています。私はそれを何と呼んでいますか?今、あなたは正しいです、それはNSDateオブジェクトです。しかし、私はDateTimePickerのdateプロパティを使ってアクセスしています。 'DateTimePicker.date' – Imperialized

+0

本当に、私はpickerView xibファイルをロードするVCに日付オブジェクトを渡す必要があります。しかし、xibにはUIView型の独自のカスタムクラスがあり、実際のピッカーはそのクラスのIBOutletとして用意されています。うまくいけば助けてくれます。 – Imperialized

+0

@Imperialized問題を解決しましたか、それでもなお助けが必要ですか? –

関連する問題