2016-08-15 2 views
0

[OK]を、アイブ氏はここで、通常の方法を試してみましたが、これは比較的簡単な問題を見つけ出すことはできません -Swift:ストーリーボードビューコントローラーからコール関数を表示しましたか?

私は私がここに存在するビューコントローラがあります。

self.presentViewController((self.storyboard?.instantiateViewControllerWithIdentifier("createEvent"))!, animated: true, completion: nil) 

をそして私は、関数内で呼び出す必要がありますこのcreateEvent VCからの私の元のメインVC。やって作成でその後

let create = self.storyboard?.instantiateViewControllerWithIdentifier("createEvent") 
create.superv = self //error here 

weak var superv: MainViewController! 

を作成するイベントクラスで、このような何かをやって:私は入れて試してみました

superv.updateThings() 

しかし、私はネクタイしようとしているエラーを取得します私のMainViewControllerに提示されたVC。私はここで間違って何をしていますか?

私はプロトコルの使用を見ましたが、私はそれを避けたいと思います。これを行う最も簡単な方法は何ですか?

これは私がやったことです:メインで :

var create = UIViewController() 
create = (self.storyboard?.instantiateViewControllerWithIdentifier("createEvent"))! 
     create.delegate = self //error here 

では、作成します。

weak var delegate: CreateEventDelegate! 
protocol CreateEventDelegate: class { 
    func doSomeFunction() 
} 

し、エラーを私が呼び出す必要がメインでvalue of type uiviewcontroller has no member delegate

機能があるされています。

self.tableView.reloadData() 

エラー:

enter image description here

答えて

1

使用プロトコル。私はあなたがそう簡単で便利ではないと言ったことを知っています。 (イベントを作成VCクラス外)ファイルの一番下に続いて

weak var delegate: CreateEventDelegate! 

protocol CreateEventDelegate: class { 
    func doSomeFunction() 
} 

が続いてメインのVCクラスにCreateEventDelegateプロトコルに準拠し、これを追加する:あなたにcreateEventのVCで :

create.delegate = self 

次に、あなたのイベントを作成VC

delegate.doSomeFunction()を呼び出すことができます
+0

doSomeFunction()がcreateによって呼び出されたときにエラー(私の質問で編集を見てください)と私のmainviewcontrollerを実行する必要がある場所を書いていますか? – skyguy

+0

私は特定のオブジェクトとの取引を呼び出す必要があるメインの関数..この別のプロトコルで関数を定義すると、このオブジェクト(そのta​​bleview)を参照する方法 – skyguy

+0

エラーについて: 'create'は通常の' UIViewController 「委任」が何であるかは分かりません。あなたは 'CreateEventViewController'(それがクラスの名前であると仮定して)としてキャストする必要があります。その場合、 'create =(self.storyboard?.instantiateViewControllerWithIdentifier(" createEvent "))を実行します。として!CreateEventViewController' –

関連する問題