选择TableView菜单中的第一项

时间:2013-11-26 12:13:11

标签: uitableview ios7 ecslidingviewcontroller

我正在使用ECSlidingViewController来管理我的幻灯片以显示菜单。

当我第一次滑动菜单时,没有选择任何菜单项。一旦我选择了一个项目,从这一点开始它将保持选中状态,直到我按照预期点击另一个菜单项。

如何在应用加载并首次刷新菜单时将第一个单元格显示为选中/突出显示?

这是我尝试过的东西,但显然它总是会选择第一个单元格,所以它没有用。

-(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];

}

每次显示菜单时,都会调用此方法,然后选择第一个单元格,而不管应该选择哪个单元格。

任何帮助都会很棒,谢谢!

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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];
    });
}