タブバーとナビバーを複合したアプリを作ったので、ナビゲーションで画面遷移した後、タブバーで画面遷移すると一つ前の状態(下の階層)から表示されてしまうので、常にルートから表示するようにできないか悩んでました。
・・・。
ありました!!
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if ([viewController isKindOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = (UINavigationController *)viewController;
[navigationController popToRootViewControllerAnimated:NO];
}
}
たったこれだけ!
TabBarControllerを管理するクラスでUITabBarControllerDelegateを実装し、タブ選択時にコールされるtabBarController:didSelectViewController:内で、選択されたタブに対応するViewControllerがNavigationViewControllerである場合にはRootViewを表示するといった流れ~
簡単に解決しました^^
後、画像のタップズームを実装してたのですが、なぜかタップした位置と中心がずれる・・・。
なぜ!!!
ちゃんと計算してるのに!
- (CGRect)zoomRectForScrollView:(UIScrollView *)__scrollView withScale:(float)scale withCenter:(CGPoint)center {
CGRect zoomRect;
zoomRect.size.height = __scrollView.frame.size.height / scale;
zoomRect.size.width = __scrollView.frame.size.width / scale;
zoomRect.origin.x = center.x - (zoomRect.size.width / 2.0);
zoomRect.origin.y = center.y - (zoomRect.size.height / 2.0);
return zoomRect;
}
原因判明・・・
[self zoomRectForScrollView:zoomScroll
withScale:2.0
withCenter:[sender locationInView:nil]];
これ!
正しくは
[self zoomRectForScrollView:zoomScroll
withScale:2.0
withCenter:[sender locationInView:imageView]];
locationInView:に対象のimageView渡し忘れてた^^;
こんな時もあるよね♩
と、すっきりしたので、寝まーすzzz
・・・。
ありました!!
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if ([viewController isKindOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = (UINavigationController *)viewController;
[navigationController popToRootViewControllerAnimated:NO];
}
}
たったこれだけ!
TabBarControllerを管理するクラスでUITabBarControllerDelegateを実装し、タブ選択時にコールされるtabBarController:didSelectViewController:内で、選択されたタブに対応するViewControllerがNavigationViewControllerである場合にはRootViewを表示するといった流れ~
簡単に解決しました^^
後、画像のタップズームを実装してたのですが、なぜかタップした位置と中心がずれる・・・。
なぜ!!!
ちゃんと計算してるのに!
- (CGRect)zoomRectForScrollView:(UIScrollView *)__scrollView withScale:(float)scale withCenter:(CGPoint)center {
CGRect zoomRect;
zoomRect.size.height = __scrollView.frame.size.height / scale;
zoomRect.size.width = __scrollView.frame.size.width / scale;
zoomRect.origin.x = center.x - (zoomRect.size.width / 2.0);
zoomRect.origin.y = center.y - (zoomRect.size.height / 2.0);
return zoomRect;
}
原因判明・・・
[self zoomRectForScrollView:zoomScroll
withScale:2.0
withCenter:[sender locationInView:nil]];
これ!
正しくは
[self zoomRectForScrollView:zoomScroll
withScale:2.0
withCenter:[sender locationInView:imageView]];
locationInView:に対象のimageView渡し忘れてた^^;
こんな時もあるよね♩
と、すっきりしたので、寝まーすzzz