6

タブバーコントローラー(UIViewController)に含まれるすべてのビューをリロードしたい検索後、setNeedsDisplayメソッドを適用する必要があることがわかりましたが、どこに適用すればよいかわかりません。他の方法も歓迎します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    .....
    .....

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    [self customToolbar];
    [self.window addSubview:tabBarController.view];
    [self.window makeKeyAndVisible];    
    return YES;
}
-(void)customToolbar
{
    //Declared view controllers and their Navigation Controller
    .....

    //Declared tab bar items
    .....    

    tabBarController = [[GTabBar alloc] initWithTabViewControllers:viewControllersArray tabItems:tabItemsArray initialTab:1];
}
4

1 に答える 1

4

これを行う正しい方法は、オブザーバーとして更新する必要のあるVCを特定のNSNotificationCenter通知名に追加することです。VCがこのメッセージを受け取ったら、を呼び出すセレクターを呼び出すだけ[self setNeedsDisplay]です。

NSNotificationCenterにVCを追加するには:

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

removeObserver:selfビューコントローラの割り当てが解除されたときに呼び出すことを忘れないでください。

于 2012-09-12T07:27:01.827 に答える