テキストボックスをクリックすると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)
}
:オプションの値をアンラップ
はこれを試してみてください事前
どのようにして、1つのビューから別のビューに移動するのですか?テキストボックスは、私が他のビューにのbuttonPressed FUNC(){ 印刷ナビゲートするためにfuncを下に呼び出しています編集される(「対象ボタンを!!」) –
//これは、ビューコントローラの新しいインスタンスを作成します。 。 vc = UIStoryboard(名前: "Main"、バンドル:なし).instantiateViewController(withIdentifier: "Storage")を! testClass self.navigationController?.pushViewController(vc、animated:true) } – Dev