我搜索过并搜索过,但无法找到问题的答案。
我有一个表视图控制器,我需要导航栏始终在屏幕顶部可见,而不是与表视图一起向上滚动。我已经看到解决方案建议我调整内容插入,将其设置为半透明等。这些都不起作用。如果您能提供任何解决方案/建议,我将非常感激!
- (无效)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];
}
答案 0 :(得分:1)
您可以尝试将UITableViewController嵌入到UINavigationControler中。
使用Storyboard:选择你的UITableViewController,按Editor>嵌入>导航控制器。
或者通过代码创建一个UINavigationController并将tableviewcontroller设置为rootviewcontroller:
UINavigationController* aNavigationController = [[UINavigationController alloc] initWithRootViewController:yourTableViewController];
并呈现aNavigationController而不是呈现yourTableViewController; - )
ps:如果yourTableViewController没有嵌入导航控制器中,那么调用self.navigationController将只返回nil,对它的任何操作都将为零。