как узнать, какая ячейка uitableview отмечена галочкой в ​​​​сборщике друзей facebook?

в моем приложении iOS я хочу знать indexPath для UITableViewCell, который отмечен галочкой?

в основном я пытаюсь ограничить выбор друзей до 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;
    }

}

проблема в том, что я не могу знать indexpath для uitableviewcell, который уже отмечен галочкой


person Ashish Pisey    schedule 08.06.2013    source источник
comment
Вы пробовали NSArray *selectedFriends = [self.friendPickerController.tableView indexPathsForSelectedRows];   -  person Peter Warbo    schedule 08.06.2013
comment
да @PeterWarbo возвращает indexPath для текущей выбранной строки, как указано в ее имени, а не путь индекса для отмеченной строки, но спасибо за ваш ответ   -  person Ashish Pisey    schedule 09.06.2013
comment
Как насчет того, чтобы перебрать все UITableViewCells tableView и проверить, является ли свойство accessorType UITableViewCellAccessoryCheckmark?   -  person Peter Warbo    schedule 09.06.2013


Ответы (1)


РЕДАКТИРОВАТЬ: Ага, теперь я понимаю вашу проблему.

Возможно, это сработает:

- (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;
        }
    }
}
person Peter Warbo    schedule 10.06.2013
comment
нет, это не работает. он отключает выбор после проверки 1-й строки - person Ashish Pisey; 10.06.2013
comment
Каков результат? ячейка nil или отмеченные ячейки не имеют accessoryType установленного на UITableViewCellAccessoryCheckmark ? - person Peter Warbo; 10.06.2013
comment
он отображает, что ячейка проверена, а ячейка не проверена, если я показываю журнал внутри if-else. Поэтому я предполагаю, что ячейки имеют галочку типа аксессуара. если я разрешаю взаимодействие с пользователем, если ячейка проверяется: - self.friendPickerController.tableView.userInteractionEnabled=YES; и отключить, если ячейка не отмечена, он отключает выбор после проверки первой строки. - person Ashish Pisey; 10.06.2013
comment
Вы пытались реализовать это? это действительно базовая функциональность для выбора друзей в Facebook, и было бы здорово, если бы мы могли ограничить количество выбираемых друзей. - person Ashish Pisey; 10.06.2013
comment
Я думаю, что теперь понимаю вашу проблему, попробуйте мой обновленный код, чтобы увидеть, работает ли он для вас. - person Peter Warbo; 10.06.2013
comment
нет, это не отключает взаимодействие с пользователем! но спасибо за попытку. надеюсь, мы сможем решить эту проблему! - person Ashish Pisey; 11.06.2013