2

EasyTableView(https://github.com/alekseyn/EasyTableView)の単純な問題に違いありません

正しく機能する水平スクロールテーブルがいくつかあります。

セルを選択してセグエを実行することはできますが、新しいView Controllerが閉じられると、同じテーブルで別のセルを選択するまで、そのセルを選択して同じアクションを実行することはできなくなります。

私の質問は、この特定のアクションを再利用できるように、プログラムで以前に選択したセルの選択を解除するにはどうすればよいですか。

前もって感謝します!

4

1 に答える 1

3

selectedIndexPathは、ユーザーが選択したテーブルビューセルを画面外にスクロールしてから再びスクロールした場合に備えて、意図的に永続化されています。この永続性が必要ない場合は、(EasyTableView.mの)デリゲートメソッドの後に、以下に示す行を追加してください。

- (void)setSelectedIndexPath:(NSIndexPath *)indexPath {

    if (![_selectedIndexPath isEqual:indexPath]) {
        NSIndexPath *oldIndexPath = [_selectedIndexPath copy];

        _selectedIndexPath = indexPath;

        UITableViewCell *deselectedCell = (UITableViewCell *)[self.tableView cellForRowAtIndexPath:oldIndexPath];
        UITableViewCell *selectedCell   = (UITableViewCell *)[self.tableView cellForRowAtIndexPath:_selectedIndexPath];

    if ([delegate respondsToSelector:@selector(easyTableView:selectedView:atIndexPath:deselectedView:)]) {
        UIView *selectedView = [selectedCell viewWithTag:CELL_CONTENT_TAG];
        UIView *deselectedView = [deselectedCell viewWithTag:CELL_CONTENT_TAG];

        [delegate easyTableView:self
                   selectedView:selectedView
                    atIndexPath:_selectedIndexPath
                 deselectedView:deselectedView];

        // Add this line here!
        _selectedIndexPath = nil;
        }
    }
}
于 2013-01-08T16:53:36.597 に答える