iOS:使导航栏始终在UITableViewController中可见

时间:2014-11-11 00:45:04

标签: ios uitableview

我搜索过并搜索过,但无法找到问题的答案。

我有一个表视图控制器,我需要导航栏始终在屏幕顶部可见,而不是与表视图一起向上滚动。我已经看到解决方案建议我调整内容插入,将其设置为半透明等。这些都不起作用。如果您能提供任何解决方案/建议,我将非常感激!

- (无效)viewDidLoad中 {     [super viewDidLoad];

self.navigationController.navigationBarHidden = NO;
self.navigationController.navigationBar.translucent=YES;

self.tableView.contentInset = UIEdgeInsetsMake(44,0,0,0);
self.automaticallyAdjustsScrollViewInsets =  NO;

self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets=NO;


if ([UIScreen mainScreen].scale > 1.0)
{
    [self->btnBack setImage:[UIImage imageNamed:@"back_button@2x.png"]];
}
else
{
    [self->btnBack setImage:[UIImage imageNamed:@"back_button.png"]];
}

self.tableView.separatorColor = [UIColor colorWithRed:69/255.0 green:189/255.0 blue:150/255.0 alpha:1.0];


[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bar_bg.png"] forBarMetrics:UIBarMetricsDefault];


NSLog(@"Loading up coupons");

MWRAppDelegate* appDelegate = [UIApplication sharedApplication].delegate;

if([g_categoryName isEqualToString: @"All"]){
    NSMutableArray *coupons = [appDelegate getAllCoupons];

    NSMutableArray *contests = [appDelegate getAllContests];

    NSArray *newArray=[contests arrayByAddingObjectsFromArray:coupons];

    self.fetchedRecordsArray = newArray;
}
else {
    NSMutableArray *coupons = [appDelegate getCatCoupons];

    NSMutableArray *contests = [appDelegate getAllContests];

    NSArray *newArray=[contests arrayByAddingObjectsFromArray:coupons];

    self.fetchedRecordsArray = newArray;
}

[self.tableView reloadData];

}

1 个答案:

答案 0 :(得分:1)

您可以尝试将UITableViewController嵌入到UINavigationControler中。

使用Storyboard:选择你的UITableViewController,按Editor>嵌入>导航控制器。

或者通过代码创建一个UINavigationController并将tableviewcontroller设置为rootviewcontroller:

UINavigationController* aNavigationController = [[UINavigationController alloc] initWithRootViewController:yourTableViewController];

并呈现aNavigationController而不是呈现yourTableViewController; - )

ps:如果yourTableViewController没有嵌入导航控制器中,那么调用self.navigationController将只返回nil,对它的任何操作都将为零。