0

ユーザーが複数のテーブルビューセルを選択し、選択ごとにカスタムチェックが表示される友達リストを追加しようとしています。私はもともと を使用didSelectRowAtIndexPathしていましたが、複数のセルを強調表示できるため、探している結果が得られませんでしたが、選択した元の行の強調表示を解除しない限り、選択できなくなりました。次に、を使用してみdidHighlighRowAtIndexPathましたが、indexPath の値が nil になっているため、これはうまくいかないようです。これが私のコードです:

override func tableView(tableView: UITableView, didHighlightRowAtIndexPath indexPath: NSIndexPath) {

    let indexPath = tableView.indexPathForSelectedRow

    let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as! AddedYouCell

    let currentUser = PFUser.currentUser()?.username

    let username = currentCell.Username.text
    print(currentCell.Username.text)

    let Friends = PFObject(className: "Friends");

    Friends.setObject(username!, forKey: "To");
    Friends.setObject(currentUser!, forKey: "From");

    Friends.saveInBackgroundWithBlock { (success: Bool,error: NSError?) -> Void in

        print("Friend has been added.");


        currentCell.Added.image = UIImage(named: "checked.png")

    }



}

どうすればこれを解決できますか? ありがとう

4

1 に答える 1

1

私はあなたのためにコードを書くつもりはありませんが、これはあなたのやり方に役立つはずです:

目標を達成するには、データをビュー (セル) から分離する必要があります。配列 (つまり、friendList) を使用して、フレンド リストとそれぞれの選択状態を格納し、その配列を使用して tableView を設定します。

numberOfCellsForRow は、friendList.count に等しい

didSelectRowAtIndexPath で、indexPath.row を使用してビュー (セル) の状態を変更し、配列内の同じインデックスの状態を設定します。

cellForRowAtIndexpath では、indexPath.row を使用して、セルの初期状態を配列から取得します。

于 2015-11-11T09:43:48.317 に答える