2012-03-12 13 views
2

私はいくつかの解析を行っているNSObjectクラスから、私のViewControllerのメソッドを呼び出そうとしています。NSObjectクラスからViewControllerメソッドを呼び出す

私は自分のサーバーからいくつかのデータをダウンロードした接続クラスを最初に呼び出します。次に、このデータをパーサークラスに渡します。これは、このデータをViewControllerに渡すことです。このビュー(つまり、ナビゲーションスタック上のテーブルビュー)のテーブルビューをリロードしてください。

とにかくこれはいくつかのエラーを引き起こしています。私はこのメソッドを呼び出すことを試みていると思います。ここで私はそれをどのように呼びます。

MyViewController *myViewController = [[MyViewController alloc] init]; 
    [myViewController initFilterArray:filteredArray]; 

今、私は新しいのViewControllerオブジェクトを割り当てていますので、これは問題を引き起こしていると思いますか? numberOfRowsInSection

:ということは、reloaddataのみ

  • numberOfSectionsInTableView
  • のtableViewを呼び出していることで、その結果terminoligyが分からないように..右..しかし、いや...

    ですそれはそれです。 ご協力いただければ幸いです。

    更新: 私はプロトコル/デリゲートを設定して、問題が解決するかどうかを確認しようとしています。私はしたい場所

    ので、私のclass.hで、これは私が

    @protocol PassParsedData <NSObject> 
    @required 
    - (void) sendMyArray:(NSArray *)modelArray; 
    @end 
    //.. 
    id <PassParsedData> delegate; 
    //.. 
    @property (strong) id delegate; 
    

    をやっているものですが、その後class.m

    //..method 
    [[self delegate]sendMyArray:filteredArray]; 
    //.. 
    

    にので、私のビューコントローラで、次にオーバー、私のクラスのthats私はこの

    viewcontroller.hを行い、このsendMyArrayを呼び出す

    #import "class.h" //delegates & protocols 
    //.. 
    interface VehicleSearchViewController : UITableViewController <PassParsedData> { 
    //.. 
    

    はその後、私はこれを行うためのこの

    viewcontroller.m // ...

    - (void)sendArray:(NSArray *)array 
    { 
        ICMfgFilterArray = array; 
        [self.tableView reloadData]; 
    } 
    

答えて

1

一つの方法は、デリゲートとプロトコルの推奨アプローチになるようにそれを呼び出します。 NSObjectはプロトコルを宣言します。 ViewControllerは実際にプロトコルを実装し、自身をデリゲートとして設定します。その後、NSObjectはメソッドを呼び出します(それを実装する人がわからない)。これは、オブジェクト間の通信に疎結合した方法です。

もし興味があるなら、私は実際に最近、問題になっている以上、あなたの更新に基づいて...

UPDATE

プロトコルや代表者への基本的な導入をblog postを書きました。 ViewControllerをデリゲートに設定することを忘れないでください。

- (void)viewDidLoad { 
     // State that you will take care of messages from graphView (provided you have the  protocol implementation!) 
     self.yourClass.delegate = self; 
    } 

また、ViewControllerのメソッドは、プロトコルのシグネチャと一致する必要があります。だから、ViewController.m

- (void) sendMyArray:(NSArray *)modelArray { 
    ICMfgFilterArray = array; 
    [self.tableView reloadData]; 
} 
+0

クールで..私は実際にちょうど今..私は...あなたを読み込みます過去にviewcontrollersの間、これを使用していたが、今nsobjectclassとのViewControllerの間でそれを使用していくつかの問題を抱えていますこれをやって開始していますブログ今..ありがとう。 –

+0

クール、どうやったらどうなるのか教えてください... –

+0

大丈夫です。しかし、私が私のクラスで設定した議定書をViewcontrollerから決してアクセスしないようにすると、私は上記の質問を私が行ったすべてのことで更新するつもりですが、私は飢えているので、あなたはどのようにイム設定アッププロトコル/デリゲートを超えるご確認できれば、単に自己を使用してみました。.. ...あなたの更新に基づいて更新され、オーケー –