/ / iOS:UINavigationControllerで前後にナビゲートした後も、選択したままにするか、マークされたセルをチェックするか? - ios、uitableview、uinavigationcontroller、チェックマーク

iOS:UITableViewのマークされたセルを選択してチェックする方法は、UINavigationControllerで前後にナビゲートした後でも維持されますか? - ios、uitableview、uinavigationcontroller、チェックマーク

1つのタブにはタブバーがありますより多くの選択肢にドリルダウンするUITableViewで構成されるルートビューコントローラが割り当てられたUINavigationController。私は私のルートビューコントローラ内のアイテムを選択した後、私は別のuitableviewを与えられ、私は 1 次のコードを使用して、そのセクションまたはグループにチェックマークを付けます。 cellForRowAtIndexPath.

if([self.checkedIndexPath isEqual:indexPath])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}

以下の didSelectRowAtIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Uncheck the previous checked row
if(self.checkedIndexPath)
{
UITableViewCell* uncheckCell = [tableView
cellForRowAtIndexPath:self.checkedIndexPath];
uncheckCell.accessoryType = UITableViewCellAccessoryNone;
}
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
self.checkedIndexPath = indexPath;

[tableView deselectRowAtIndexPath:indexPath animated:YES];
}

私の問題は、私が戻るボタンを使用するときですナビゲーションメニューに戻り、同じUItableviewに戻ると、チェックマークが消えます。しかし、私はそのビューで上下にスクロールする場合、これは当てはまりません。ナビゲーションコントローラを使用して前後に移動するとき、どうすればそのチェックマークを保持しますか。

回答:

回答№1は1

私はあなたが前後に行くたびに新しいUIViewControllerインスタンスをプッシュしているため、この問題が発生していると信じています。新しいインスタンスは、以前のcheckedPathプロパティが何であるかを知りません。

これを解決するには、次のいずれかを行う必要があります。

  1. 何らかの形でチェックされた行の値を保持します(NSUserDefaults、CoreDataなど)。このようにして、どのインスタンスも同じチェックされた行の値を取得します
  2. 押したときに同じView Controllerを再使用します。