-1

您是否注意到在创建 UITableView 时不再设置 UINavigationBar,即使在给它一个标题或按钮之后也是如此?

现在我对如何在我的 UITableView 上放置一个导航栏感到很生气。似乎真的不可能。我试图向我的 tableView 添加一个带有导航栏的子视图,但似乎毫无价值,因为当我向下滚动时,导航栏会向下滚动并且它不应该向下滚动。

关于如何实施它的任何想法?

编辑

好吧,和往常一样,我继续使用 File -> New -> File.. -> UITableView。然后我设置了一些代码,当我写的时候

self.navigationItem.title = @"MyTitle";
self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;

并尝试在模拟器上进行测试,没有出现导航栏。

我的初始化代码:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = @"TabTitle";
        self.tabBarItem.image = [UIImage imageNamed:@"img.png"];
        self.view.backgroundColor = [UIColor scrollViewTexturedBackgroundColor];

    }
    return self;
}

我无法解释为什么它不再出现。我还尝试创建一个新项目并从出现导航栏的项目中导入我的类,但那里的结果也相同。

编辑2*

该应用程序是一个基于选项卡的应用程序。这是从用于设置 tabBar 的 App 委托中获取的代码。

 UIViewController *viewController1, *viewController4;
    UITableViewController *viewController2, *viewController3;
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        viewController1 = [[FirstViewController alloc] initWithNibName:@"First_iPhone" bundle:nil];
        viewController2 = [[Tips alloc] initWithNibName:@"Table" bundle:nil];
        viewController3 = [[Favorites alloc] initWithNibName:@"Test_iPhone" bundle:nil];
        viewController4 = [[SecondViewController alloc] initWithNibName:@"Second_iPhone" bundle:nil];
    }
4

1 回答 1

1

您正在初始化一个UITabBarController并将 4 设置UIViewControllers为相应的UITabbarViewControllers. 由于其中两个是正常的UIViewControntroller,两个是正常的,UITableViewController所以不能有导航栏。您必须将 viewController 加载到您希望导航栏形成的位置UINavigationController。正确的方法是(假设 vc3 是您想要导航栏的地方):

UIViewController *viewController1, *viewController4;
UITableViewController *viewController2, viewController3;
UINavigationController *vc3NavController;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    viewController1 = [[FirstViewController alloc] initWithNibName:@"First_iPhone" bundle:nil];
    viewController2 = [[Tips alloc] initWithNibName:@"Table" bundle:nil];
    viewController3 = [[Favorites alloc] initWithNibName:@"Test_iPhone" bundle:nil];
    vc3NavController = [[UINavigationController alloc] initWithRootViewController:viewController3];        
    viewController4 = [[SecondViewController alloc] initWithNibName:@"Second_iPhone" bundle:nil];
}

然后加载 vc3NavController 而不是 viewController3 作为相应的选项卡。所以你有: UITabBarController -> UINavigationController -> YourViewController

也许创建导航界面也会对您有所帮助。

于 2012-05-24T06:58:26.277 回答