-1

我使用以下代码在视图中添加了一个导航栏:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Load Colors"];
    [navBar pushNavigationItem:navItem animated:NO];
    UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit"
                                                                   style:UIBarButtonItemStyleBordered
                                                                  target:self
                                                                  action:@selector(toggleEdit:)];
    navItem.rightBarButtonItem = editButton;
    [self.view addSubview:navBar];

    CGRect tableFrame = self.tableView.frame;
    tableFrame.origin.y = tableFrame.origin.y +45;
    self.tableView.frame = tableFrame;
}

正如您在下图中看到的那样,它出现在我的 tableView 上。我该如何解决?

在此处输入图像描述

4

4 回答 4

0

您可以将您的 tableview origin.y 设置为 45,以便导航栏不会出现在 tableview

于 2013-04-21T11:54:39.257 回答
0

在 xib 文件中,您可以为导航栏提供空间。下图描述了它。在此处输入图像描述然后你可以添加你的tableview。

UINavigationBar 对于正常显示的尺寸为 320x44,对于视网膜显示 iPhone 的尺寸为 640x88。

并在 viewWillAppear 中使用此代码

    //for custom navigationbar
    UINavigationBar *navBarName = [[self navigationController] navigationBar];
    UIImage *backgroundImg = [UIImage imageNamed:@"NavBar.png"];// ur navigationbar image of above dimension
    [navBarName setBackgroundImage:backgroundImg forBarMetrics:UIBarMetricsDefault];

    //for right edit button
    UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(toggleEdit:)];          
  self.navigationItem.rightBarButtonItem = editButton;
于 2013-04-21T19:26:27.193 回答
0
CGRect navframe = [[self.navigationController navigationBar] frame];

使用 'navframe.size.height' 计算导航栏的高度,并将 TableView 的原点 'y' 设置为此高度值。

于 2013-04-21T12:09:13.480 回答
0

我不知道它是否适合您的情况,但是将 NavigationBar 添加到 ViewController 的最佳方法是将 ViewController 包含到 NavigationViewController 中。在这种情况下,您也无需担心设备旋转时的正确转换。

我尝试手动实现一次(因为我只需要一个视图上的导航栏,所以我认为使用 NavigationController 会有点过分)。但最后我删除了所有代码并改用 NavigationController。

于 2013-04-21T12:19:37.843 回答