2016-09-18 10 views
0

テキストボックスをクリックするとView1が表示されます。私はview2(テーブルビュー)を使用して値を選択します。私はそのテキストボックスのためにview1に選ばれた値を送りたい。データを前のビューに渡す、@ IBaction swift

コントロールはプログラムで作成されるため、私はsegue、IBActionsを使用していません。

私はまだ成功していないプロトコルの方法を使用しようとしています。ここで私が試したことがあります。

class DynamicSuperView: UIViewController,UITableViewDelegate,UITableViewDataSource,dropdownDelegate,UITextFieldDelegate 
{ 

func setValue(value:AnyObject) 
{ 
    print("dynamic view delegate method executed") 
    self.labelText = value as! String 
    //return selectedValue; 
    } 

override func viewDidLoad() { 

} 
} 

第二のクラスは、デリゲートメソッドとここ..です

protocol dropdownDelegate { 
    func setValue(value: AnyObject); 
} 


class testClass: UIViewController,UITableViewDataSource,UITableViewDelegate,UISearchBarDelegate { 
    var delegate:dropdownDelegate! = nil 

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    let vcName = names[indexPath.row] 
    print ("Table view cell clicked and value passed: \(vcName)") 

    if let cell = tableView.cellForRow(at: indexPath) { 
     cell.accessoryType = .checkmark 

    } 

    self.navigationController?.popViewController(animated: true) 

    delegate.setValue(value: "Testing delegate") 

} 

} 

私は、デリゲートメソッドを呼び出して、その値が、ノー成功に合格しようとしていますテーブルビューで値を選択したら。

私は以前のビューコントローラの新しいインスタンスを作成したくないのです。私は現在のビューコントローラをポップして、以前のビューコントローラに行っています。

私のアプローチが正しいかどうかをご提案ください。

ERROR: 致命的なエラー:あなたが最初のビューコントローラにデリゲートを設定されていません

view func ButtonPressed() { 

print("Button Pressed!!") // This will create the new instance of the view controller. 

let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier: "Storage") as! testClass 

vc.delegate = self 

self.navigationController?.pushViewController(vc, animated:true) 
} 

:オプションの値をアンラップ

はこれを試してみてください事前

+0

どのようにして、1つのビューから別のビューに移動するのですか?テキストボックスは、私が他のビューにのbuttonPressed FUNC(){ 印刷ナビゲートするためにfuncを下に呼び出しています編集される(「対象ボタンを!!」) –

+0

//これは、ビューコントローラの新しいインスタンスを作成します。 。 vc = UIStoryboard(名前: "Main"、バンドル:なし).instantiateViewController(withIdentifier: "Storage")を! testClass self.navigationController?.pushViewController(vc、animated:true) } – Dev

答えて

0

にありがとうながら予想外にnilを見つけます。

+0

私はこれをしましたが、これはプロトコルメソッドを実行していません。 エラーもありません – Dev

+0

ボタンタッチダウンイベントを使用してViewCOntroller2にアクセスすると、代理人だけが実行されます。私はUITextBoxイベントのためにそれをしたいです このフローは動作しています。 ViewController1 - >ボタン(onclick) - >デリゲートの値の選択時にViewController2を表示しています。 このフローは機能しません ViewController1 - > UIText(onclick) - >デリゲートの値の選択時にViewController2を表示しています。 dynamicTxtField.addTarget(自己、行動のための: "のbuttonPressed"、:UIControlEvents.editingDidBegin) dynamicTxtField.addTarget(自己、行動のための: "のbuttonPressed"、:UIControlEvents.editingDidBegin) – Dev

関連する問題