0

私のiOSアプリで、チェックマークUITableViewCellが付いているindexPathを知りたいですか?

基本的に、友人の選択を3人の友人に制限しようとしています。選択数が3より大きい場合、テーブルビューのユーザーインタラクションを無効にしました。選択した行がチェックマークが付いている行と等しい場合は、再度有効にしたいので、ユーザーは現在のチェックマークの付いた行のいずれかのチェックを外すことで、別の友達と友達になれます。私はこれを試しました:-

 #pragma mark Limiting number of friends selected to 3
- (void)friendPickerViewControllerSelectionDidChange:
(FBFriendPickerViewController *)friendPicker
{
    if ([friendPicker.selection count] <=3)
    {
        self.friendPickerController.tableView.userInteractionEnabled=YES;
    }
    if ([friendPicker.selection count] >=3)
    {
        UIAlertView *maxFriendsAlert =
        [[UIAlertView alloc] initWithTitle:@"Max number of friends selected."
                                   message:@"no more friends can be selected,"
                                  delegate:self cancelButtonTitle:@"OK"
                         otherButtonTitles:@"Buy more friends",nil];
        [maxFriendsAlert show];
        maxFriendsAlert.tag=1;

#pragma mark disable friends selection
        self.friendPickerController.tableView.userInteractionEnabled=NO;
    }

    //enable friend selection if selected row is equal to checkmarked row i.e. enable selection for previously checkmarked row
    NSIndexPath *oldindexPath1=[self.friendPickerController.selection objectAtIndex:0];
    NSIndexPath *oldindexPath2=[self.friendPickerController.selection objectAtIndex:1];
    NSIndexPath *oldindexPath3=[self.friendPickerController.selection objectAtIndex:2];

    if (self.friendPickerController.tableView.indexPathForSelectedRow==oldindexPath1||self.friendPickerController.tableView.indexPathForSelectedRow==oldindexPath2||self.friendPickerController.tableView.indexPathForSelectedRow==oldindexPath3)
    {
        self.friendPickerController.tableView.userInteractionEnabled=YES;
    }

}

問題は、すでにチェックマークが付けられている uitableviewcell のインデックスパスがわからないことです

4

1 に答える 1

0

編集:ああ、今私はあなたの問題を理解しています。

多分これはうまくいくでしょう:

- (void)friendPickerViewControllerSelectionDidChange:(FBFriendPickerViewController *)friendPicker {

    UITableView *friendPickerTable = friendPicker.tableView;
    NSArray *indexPathsForSelectedRows = friendPickerTable.indexPathsForSelectedRows;

    NSIndexPath *indexPathForSelectedRow = friendPickerTable.indexPathForSelectedRow;

    if([indexPathsForSelectedRows containsObject:indexPathForSelectedRow]) {

        // Checked friend has previously been checked
        friendPickerTable.userInteractionEnabled = YES;

    } else {

        // New checkmark
        NSUInteger checkCount = indexPathsForSelectedRows.count;

        if (checkCount > 3) {

            // Alert the user
            UIAlertView *alert = ...
            friendPickerTable.userInteractionEnabled = NO;

        } else {

            friendPickerTable.userInteractionEnabled = YES;
        }
    }
}
于 2013-06-10T07:27:26.333 に答える