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

标签 ios uitableview

我找了又找,还是找不到问题的答案。

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

-(无效)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];

最佳答案

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

使用 Storyboard:选择您的 UITableViewController,按编辑器 > 嵌入 > 导航 Controller 。

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

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

并呈现一个 NavigationController 而不是呈现你的 TableViewController ;-)

ps:如果你的 TableViewController 没有嵌入到导航 Controller 中,那么调用 self.navigationController 将只返回 nil 并且对它的任何操作也将是 nil。

关于iOS:使导航栏在 UITableViewController 中始终可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26855658/

相关文章:

ios - 随时间获取两个频率的幅度

ios - 自定义 TableViewCell - 此类与键的键值编码不兼容

iphone - 黑色半透明导航栏/UITableView/内容插入/滚动位置问题

ios - UINavigationController 下面的 native View ?

ios - 将 Realm 查询结果用作UITableView节标题

ios - 滚动时更新 UITableViewCell

IOS 应用提交路由应用

ios - CMAltimeter 回调永远不会触发

ios - 加密/解密 NSString

ios - 如何在 swift 3 中使用 NSPredicate 过滤数组