我使用以下代码在视图中添加了一个导航栏:
- (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 .. 我该如何解决?
答案 0 :(得分:0)
您可以将tableview origin.y设置为45,以便导航栏不会超过tableview
答案 1 :(得分:0)
CGRect navframe = [[self.navigationController navigationBar] frame];
使用'navframe.size.height'计算导航栏的高度,并将TableView orgin'y'设置为此高度值。
答案 2 :(得分:0)
我不知道你的情况是否合适,但是向ViewController添加NavigationBar的最佳方法是将ViewController包含在NavigationViewController中。在这种情况下,您也无需担心设备旋转时的正确转换。
我试图手动实现一次(因为我只在一个视图上需要一个导航栏,所以我认为使用NavigationController会是一种过度杀伤力)。但最后我删除了所有代码并改为使用了NavigationController。
答案 3 :(得分: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;