2016-07-20 26 views
2

これを達成する方法がわからないので、私はこの質問をしています。Objective-Cを使用して別のViewControllerからテーブルビューを再ロード

abVCxyVCの2つのViewController(VC)があります。 abVCには、TableViewxyVCのボタンのみが含まれています。

xyVCのボタンをタップすると、abVCに移動せずにabVCの内部でテーブルビューをリロードする必要があります。

可能ですか?はいの場合は、私を助けてください、それを行う方法?

+0

NSNotifications – Shubhank

+1

NSNotidfication ObserverをabVCで追加することができます。ボタンを押したときにxyVCから通知をポストします。 –

+2

別の方法として、デリゲートを使用する方法があります。しかし、それはアプリケーションのアーキテクチャに依存します。 – crisisGriega

答えて

1
  1. あなたのボタンのアクションメソッドに次の行を追加し

    [[NSNotificationCenter defaultCenter] postNotificationName:@"ReloadTable" object:nil];

  2. 、あなたがテーブルを実装している、このコードを追加します。abVCでそう:

    1. viewDidLoad内側:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTableViewData) name:@"ReloadTable" object:nil];

  3. 次のメソッドを追加

- (void)reloadTableViewData{
[self.myTableView reloadData];
}

  • に(deallocメソッドを実装クラッシュを防止する)
  • - (void)dealloc{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"ReloadTable" object:nil];
    }

    4

    あなたはブロックとNSNotificationの両方でそれを行うことができます。ブロックで

    次のようにあなたがそれを実装することができます:

    をxyzVC.hに次のようにプロパティを作る:

    @property(strong,nonatomic)void(^callBack)(); 
    

    xyzVCでこのプロパティを合成します。

    [abVC setCallBack:^{ 
         //reload your tableview here 
        }]; 
    

    NSNotificationで次のようにあなたがそれを実装することができます:メートル

    @synthesize callBack 
    

    ボタンで呼び出し、このブロックイベントをクリックし

    - (IBAction)btnClick:(UIButton *)sender { 
    
    if (callBack) 
        { 
         callBack(); 
        } 
    
    } 
    

    はあなたがコールバックしたいabcVCでそれを実装

    通知の受信登録あなたはNSNotificationを使用している場合は、あなたのビューコントローラが

    を却下されたときにそれを削除することを忘れないでください:abcVC.m

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTableView) name:@"ReloadTable" object:nil]; 
    
    - (void)reloadTableView{ 
        // Reload your tableview here 
    } 
    

    で今すぐxyzVC

    - (IBAction)btnClick:(UIButton *)sender { 
    
        [[NSNotificationCenter defaultCenter] postNotificationName:@"ReloadTable" object:nil]; 
    
    } 
    

    から注意を通知を投稿

    私はこれがあなたを助けてくれることを願っています:)

    関連する問題