2014-11-11 3 views
1

Я искал и искал и не смог найти ответ на мою проблему.iOS: Сделать навигационную панель всегда видимой в UITableViewController

У меня есть Настольный контроллер, и мне нужно, чтобы панель навигации всегда была видна в верхней части экрана, а не прокручивалась вместе с табличным представлением. Я видел решения, предлагающие изменить настройки содержимого, настроить его на прозрачность и т. Д. Ни один из них не работает. Если вы можете предоставить любые решения/предложения, я был бы очень благодарен!

- (void) 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:@"[email protected]"]]; 
} 
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

показать код того, что вы сделали до сих пор, чтобы мы знали, где все пошло не так. – TheProvost

+0

Эти две вещи кажутся противоречивыми: «Мне нужно, чтобы панель навигации всегда была видна в верхней части экрана и прокручивалась вместе со столом Посмотреть." Если он прокручивается в виде таблицы, он не всегда будет виден, так что вы хотите? – rdelmar

+0

Прошу прощения, я имел в виду «И не прокручивать вверх вместе с табличным представлением» –

ответ

1

Вы можете попытаться встроить UITableViewController в UINavigationControler.

Использование раскадровки: выберите свой UITableViewController, нажмите Редактор> Вставить в> Контроллер навигации.

Или by code, create a UINavigationController и set your tableviewcontroller в its rootviewcontroller:

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

и present aNavigationController instead of presenting yourTableViewController ;-)

ps: если yourTableViewController is не embeded в a navigation контроллер, тогда вызов self.navigationController просто вернет нуль, и любое действие на нем будет равно нулю.

+0

Я просто попробовал свой метод «Использование раскадровки: выберите свой UITableViewController, нажмите« Редактор »>« Вставить »в« Контроллер навигации », и это не сработало, результат. –

+0

@JasonHowell, что должно было сработать. Что такое «тот же результат»? Вы никогда не упоминаете в своем вопросе, какой результат вы получили в первую очередь. – rdelmar

+0

@rdelmar - тот же результат, когда вы прокручиваете вниз по экрану таблицы, панель навигации остается в верхней части табличного вида и в конечном итоге больше не отображается, чем дальше вы идете по списку. Мне нужно, чтобы панель навигации оставалась видимой независимо от того, где вы находитесь в списке табличного представления. –

Смежные вопросы