“这件事发生在你身上吗?”
(注意:以下是适合ARC的代码,因此没有autorelease
个电话或retain
/ release
对。)
#pragma mark - UIViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
// "We interrupt this designated initializer to go do our own thing ..."
return [self init];
}
#pragma mark - NSObject
- (id)init {
// Why hello there, superclass designated initializer.
if ((self = [super initWithNibName:@"YourNibHere" bundle:nil])) {
// We're in a nav controller, so set the title.
self.navigationItem.title = @"Item Title";
// "Someone set up us the tab bar!"
[self setTabBarItem:[[UITabBarItem alloc] initWithTitle:@"Item Title" image:[UIImage imageNamed:@"itemIcon.png"] tag:itemTag]];
}
return self;
}
所以...这是 UINavigationController 中的顶级 UIViewController ,而后者又在某个索引的 UITabBarController 中。 Cocoa视图控制器的经典 turducken ,如果你愿意的话。
点击标签栏项,上下文更改为顶部的 UIViewController ,生活很精彩。
啊,但是如果你想在不同的(标签栏)索引下以编程方式从视图控制器切换到这个怎么办?
似乎很容易。只需使用-selectedViewController:
并传入要切换到的 UINavigationController (不 UIViewController )。 “大部分都是无害的。”
每次都有效......除非我在更多导航控制器下隐藏 UINavigationController 时遇到一个非常烦人的怪癖(iOS时使用)超过五个标签栏项目。)
怪癖?当我点击后退按钮(“更多”)以弹出 UIViewController (由于更多sitch,y'see而不再是最顶层),imageView
和textLabel
在表格视图中标识此标签栏项目的单元格缺少!因为没有。只是一个空单元格。
如果我将表格视图单元格滚动到屏幕上并重新打开,或以其他方式远离并返回到更多导航控制器,则会出现然后。 :(
什么时候发生?询问心灵想知道......
答案 0 :(得分:0)
我为此做了一个修复。它不漂亮,但它是一些东西。
扩展UITabBarController:
- (void)viewDidLoad {
[super viewDidLoad];
self.moreNavigationController.delegate = self;
}
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
//Fix for not showing the selected item in the tableview.
if ([navigationController.topViewController isKindOfClass:NSClassFromString(@"UIMoreListController")]) {
[navigationController.topViewController.view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[UITableView class]]) {
*stop = YES;
UITableView *tableView = (UITableView *)obj;
[tableView reloadData];
}
}];
}
}
这样,tableview将在可见时重新加载。你会看到细胞出现在过渡中,但对我来说这不是问题。