0

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

}

メニューが表示されるたびに、このメソッドが呼び出され、どのセルが選択されているかに関係なく、最初のセルが選択されます。

どんな助けでも素晴らしいでしょう、ありがとう!

4

2 に答える 2

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];
    });
}
于 2013-11-26T15:02:14.050 に答える
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
}
于 2013-11-26T14:34:54.617 に答える