选中等于0时禁用右侧栏按钮

时间:2014-08-03 19:36:07

标签: ios tableview navbar

以下代码大部分在选择项目时起作用,条形按钮启用,但只要我取消选择1仍然选择了3,它就会禁用。

当计数达到0项时,如何使用以下代码禁用?

- (void)assetsTableViewCell:(WSAssetsTableViewCell *)cell didSelectAsset:(BOOL)selected atColumn:(NSUInteger)column
{
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

    // Calculate the index of the corresponding asset.
    NSUInteger assetIndex = indexPath.row * self.assetsPerRow + column;
    WSAssetWrapper *assetWrapper = [self.fetchedAssets objectAtIndex:assetIndex];
    assetWrapper.selected = selected;

    // Update the state object's selectedAssets.
    [self.assetPickerState changeSelectionState:selected forAsset:assetWrapper.asset];

    // Update navigation bar with selected count and limit variables
    dispatch_async(dispatch_get_main_queue(), ^{
        if (self.assetPickerState.selectionLimit) {
            self.navigationItem.title = [NSString stringWithFormat:@"%@ (%lu/%ld)", [self.assetsGroup valueForProperty:ALAssetsGroupPropertyName], (unsigned long)self.assetPickerState.selectedCount, (long)self.assetPickerState.selectionLimit];
        }
    });
}

以下是需要调整的内容。

if (selected == 1) {
    self.navigationItem.rightBarButtonItem.enabled = YES;
} else if (selected == 0) {
    self.navigationItem.rightBarButtonItem.enabled = NO;
}

2 个答案:

答案 0 :(得分:1)

selected将为您提供当前asset的状态,因此检查此信息并不明智。
我们需要检查一些有点全球的东西;基本上检查以前的选择。

查看您的navigationItem.title,似乎assetPickerState.selectedCount应该可以解决问题。

所以......也许这个? (不确定但反正......)

if (self.assetPickerState.selectedCount == 0) {
    self.navigationItem.rightBarButtonItem.enabled = NO;
}
else {
    self.navigationItem.rightBarButtonItem.enabled = YES;
}

答案 1 :(得分:0)

看起来你只有当你选择了1个(不超过那个)时才显式启用按钮。只是随心所欲,但这可能会起作用(只有在零时禁用,否则启用它)。

if (selected == 0) {
    self.navigationItem.rightBarButtonItem.enabled = NO;
} else {
    self.navigationItem.rightBarButtonItem.enabled = YES;
}