タブバーのアプリを作っております。
タブ1でUserDefaultsに追加された内容をタブ2で表示するといったことをしております。
下記の様に書いてテーブルを更新しているのですがセルの内容が更新されません。
再起動すると内容は更新されます。
原因がおわかりになる方はおりませんでしょうか。
viewDidAppearの処理がされない
Re: viewDidAppearの処理がされない
viewDidAppear は画面が切り替わったからといって必ず呼ばれるわけではないです。
http://stack3.net/blogdev/p/299
あたりが詳しく書かれてて分かりやすいですね。
http://stack3.net/blogdev/p/299
あたりが詳しく書かれてて分かりやすいですね。
Re: viewDidAppearの処理がされない
回答が遅くなってしまい申し訳ありませんでした。
参考になるURLをありがとうございます。
なぜ更新されないかが何となくわかりました。
ただ頂いたURLとは状況が少し違うので自分なりに修正して実装することは出来ませんでした。
頂いたURLでは階層が下に入ってるからのような気がするのですが
タブだと同じレベルでの階層の気がします。
A
├B
└C
AーB
└C
現在のソースでは下記の様になっておりFavorite~.mにてデータの更新を行いたいです。
参考になるURLをありがとうございます。
なぜ更新されないかが何となくわかりました。
ただ頂いたURLとは状況が少し違うので自分なりに修正して実装することは出来ませんでした。
頂いたURLでは階層が下に入ってるからのような気がするのですが
タブだと同じレベルでの階層の気がします。
A
├B
└C
AーB
└C
現在のソースでは下記の様になっておりFavorite~.mにてデータの更新を行いたいです。
/////AppDelegate~.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// タブバー
viewControllers = [[NSMutableArray alloc] initWithCapacity:0];
NSArray *tabBarTitleArray = [NSArray arrayWithObjects:
@"ホーム",
@"お気に入り",
@"更新情報",
nil];
NSArray *imageArray = [NSArray arrayWithObjects:
@"Home.png",
@"Favorite.png",
@"Others.png",
nil];
TopMenuController *tableViewController;
for(int i = 0; i <[tabBarTitleArray count]; i++){
if( i == 0 ) tableViewController = [[TopMenuController alloc] init];
if( i == 1 ) tableViewController = [[FavoriteMenuController alloc] init];
if( i == 2 ) tableViewController = [[UpdataMenuController alloc] init];
tableViewController.title = [tabBarTitleArray objectAtIndex:i];
navigationController = [[UINavigationController alloc] initWithRootViewController:tableViewController];
navigationController.tabBarItem.title = [tabBarTitleArray objectAtIndex:i];
navigationController.tabBarItem.image = [UIImage imageNamed:[imageArray objectAtIndex:i]];
[viewControllers addObject:navigationController];
}
tabBarController = [[UITabBarController alloc] init];
tabBarController.moreNavigationController.navigationBar.barStyle = UIBarStyleBlack;
tabBarController.customizableViewControllers = NO;
[tabBarController setViewControllers:viewControllers];
// tabBarController.view.frame = CGRectMake( 0, 20, 320, 480-20-48 );
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
return YES;
}
/////FavoriteMenu~.m
- (void)viewDidAppear:(BOOL)animated {
[self.tableView reloadData];
[super viewDidAppear:animated];
}
Re: viewDidAppearの処理がされない
viewDidAppearは呼ばれているのですか? 呼ばれていないのですか?
呼ばれていないのであれば、UITabBarDelegate の didSelectItemにその処理を移してみて
その結果を教えて下さい。
呼ばれていて reloadDataも実行されているのにも関わらず更新されないのであれば、
断片コードではどうにもならないのでプロジェクトをアップロードして下さい。
呼ばれていないのであれば、UITabBarDelegate の didSelectItemにその処理を移してみて
その結果を教えて下さい。
呼ばれていて reloadDataも実行されているのにも関わらず更新されないのであれば、
断片コードではどうにもならないのでプロジェクトをアップロードして下さい。
Re: viewDidAppearの処理がされない
Justy様
申し訳ございません。事故解決できました。
頂いたアドバイスを基に呼ばれているか調べてみました。
viewDidAppearを調べてみたら呼ばれてみたのですが表示する用のデータが更新されておりませんでした。
こちらを更新するように修正した所、問題なく表示できました。
申し訳ございません。事故解決できました。
頂いたアドバイスを基に呼ばれているか調べてみました。
viewDidAppearを調べてみたら呼ばれてみたのですが表示する用のデータが更新されておりませんでした。
こちらを更新するように修正した所、問題なく表示できました。