UITabBarControllerに一定数以上のタブを登録した場合、すべてのタブが表示される訳ではなく、一番右にある項目が自動的に「その他」となります。
その他タブをタップすると、表示されていないタブの一覧に遷移します。
その他一覧を表示中に一覧項目に該当するタブのタイトルを変更した場合(例えばPage.5をPage.99に変更)、一覧には反映されません。
今回はこのようなケースで一覧に正しく反映させる為の処理を紹介します。
その他一覧が存在する時にUITabbarControllerのsubviewsを検索すると、「UIMoreListController」というクラスが見つかります。
このクラスがその他一覧となりますので、インスタンスに対して一覧の更新をコールする事で仕様を満たす事が可能です。
以下コードとなります。
※selfがUITabbarControllerを継承するクラスである事を前提としていますので、適宜修正して下さい。
// その他一覧を更新する
for (UIViewController* viewController in self.moreNavigationController.viewControllers) {
if ([viewController isKindOfClass:NSClassFromString(@"UIMoreListController")]) {
if ([viewController.view isKindOfClass:[UITableView class]]) {
[((UITableView*)viewController.view) reloadData];
break;
}
}
}
同じ要領でその他一覧をカスタマイズする事も可能です。
その他一覧はタブが変更されるごとに生成され直すようなので、カスタマイズする場合はその点にご注意下さい。
コメントする