2011-10-18 3 views
0

いくつかのNSUserDefaultを更新するのに使用するビューがあります。これらのデフォルトは、異なるビューの表に影響します。私が直面している問題は、ビューが再び表示される前にテーブルのデータをリロードすることです。現時点では親ビューでメソッドを呼び出すにはどうすればよいですか? (iPhone/Objective-C)

私はテーブルが含まれているviewAを持って、私は、次のコードを使用してviewBを表示:ユーザーがviewBが却下されたNSUserDefaultsを更新しました

​​

たら、それゆえ再びviewAを表示します。 viewAが表示される前に、私はデータをリフレッシュできるようにしたいと思います。これを行う方法はありますか?

+0

[代理人](http://developer.apple.com)com/library/ios /#documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html) – Joe

答えて

1

viewAのビューでは、あなたがコードを更新するよう呼びかけています。

-(void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    // your refresh code 
} 
0

経由delegation

ViewAControllerがViewBControllerが

@protocol ViewBControllerProtocol 
/* 
use full signatures here 
*/ 
@end 


@interface ViewBController{ 
} 
@property (nonatomic, assign) id<ViewBControllerProtocol> delegate; 
@end; 


@interface ViewAController <ViewBControllerProtocol>{ 
} 
@end; 

@implemantation ViewAController 

// implement the method defined in the protocol 
@end 

を提供すること、protocolを実装する必要があり、あなたが

viewB.delegate = viewA 

を行うあなたはCheckTableControllerは次のようになりsample code at githubを、見つけることができますViewBControllerおよびShowFavoritesTableControllerViewAController

0

presentingViewController/parentViewController(これらのドキュメントを読む)を使用できます。しかし、もっと良い解決策は、 "親"をあなたのモーダルコントローラの代理人にして、親が委任者が従うプロトコルを実装させることです。

さらに良い解決策は、モーダルコントローラにリターンコードをブロックで表示することですが、Appleがまだ私たちに与えていないので、独自のソリューションをロールバックする必要があります。

0

私はviewAcontrollerがviewBcontrollerのためのあなたの代理人である場合は、viewAのメソッドにmodalViewControllerまたはviewBを解任することを推測します。 この同じ方法では、必要なテーブルリロードデータを実装するだけで済みます。これは、viewAを再度表示する前に実行されます。 viewBcontroller.mで

@protocol ViewBControllerDelegate <NSObject> 
    -(IBAction)closeViewBController; 

    @end 

:viewAcontroller.hで

-(IBAction)closeView{ 


    [[self parentViewController] performSelector:@selector(closeViewBController)]; 

    } 

インターフェイスの前にviewBcontroller.hで

私はコードのようなものを持っています

@interface viewAcontroller : UIViewController <ViewBControllerDelegate> 
    {//....implementation here 

とi n ViewAController.m:

-(IBAction)closeViewBController{ 
    [self dismissModalViewControllerAnimated:YES]; 
    //code needed if NSUserDefault is modified 
    } 

これは非常に書きやすいです。これがあなたの質問にお答えしますようお願い致します。

関連する問題