2013-11-26 7 views
0

Я использую ECSlidingViewController для управления моим слайдом, чтобы открыть меню.Выбор первого элемента в меню TableView

При первом перемещении меню, ни один из пунктов меню не выбран. Как только я выберу элемент, с этого момента он останется выбранным до тех пор, пока я не коснусь другого пункта меню, как ожидалось.

Как я могу сделать первое показ ячейки выбранным/выделенным, когда приложение загружается, а меню вызывается в первый раз?

Вот что-то, что я пробовал, но, очевидно, он ВСЕГДА выбирает первую ячейку, поэтому это не хорошо.

-(void)viewWillAppear:(BOOL)animated { 
    // assuming you had the table view wired to IBOutlet myTableView 
    // and that you wanted to select the first item in the first section 
    [self.menuTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop]; 

} 

Каждый раз, когда меню раскрывается, этот метод вызывается, который затем выбирает первую ячейку, независимо от того, который, как предполагается, клетки должны быть выбраны.

Любая помощь была бы замечательной, спасибо!

ответ

0

Вы можете добавить свойство для отслеживания выбранного пункта меню

@property (nonatomic, strong) NSIndexPath *selectedIndexPath; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.selectedIndexPath = [NSIndexPath indexPathForRow:0 
               inSection:0]; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [self.menuTableView selectRowAtIndexPath:self.selectedIndexPath 
            animated:NO 
           scrollPosition:UITableViewScrollPositionNone]; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    self.selectedIndexPath = indexPath; 
    // close menu panel and show view controller 
} 
0

попробуйте переместить свой код viewDidLoad: в то время как очереди его в основном потоке. Его следует вызывать только один раз.

- (void)viewDidLoad:(BOOL)animated { 
    [super viewDidLoad:animated]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.menuTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop]; 
    }); 
} 
Смежные вопросы