Я нашел то, что мне было нужно в этом вопросе .
В основном вы настроили UITabBarControllerDelegate
и a UINavigationControllerDelegate
для отображаемого контроллера навигации.внутри вкладки Больше.После этого вы обнаруживаете, нажал ли пользователь одну из видимых вкладок или вкладку «Еще».
РЕДАКТИРОВАТЬ
Кроме того, чтобы напрямую манипулировать таблицей, которая отображается в навигации «Больше»В контроллере вы можете настроить делегата табличного представления «человек посередине», который перехватывает вызовы исходного делегата.См. Код изнутри didSelectViewController
ниже:
if (viewController == tabBarController.moreNavigationController && tabBarController.moreNavigationController.delegate == nil) {
// here we replace the "More" tab table delegate with our own implementation
// this allows us to replace viewControllers seamlessly
UITableView *view = (UITableView *)self.tabBarController.moreNavigationController.topViewController.view;
self.originalDelegate = view.delegate;
view.delegate = self;
}
После этого вы можете делать все, что захотите, внутри методов делегата, если вы вызываете те же методы в другом делегате (я на самом деле проверилНа какие методы отвечает исходный делегат, и единственный реализованный метод делегата - это didSelectRow:forIndexPath:
).Смотрите пример ниже:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// this is the delegate for the "More" tab table
// it intercepts any touches and replaces the selected view controller if needed
// then, it calls the original delegate to preserve the behavior of the "More" tab
// do whatever here
// and call the original delegate afterwards
[self.originalDelegate tableView: tableView didSelectRowAtIndexPath: indexPath];
}