以下代码大部分在选择项目时起作用,条形按钮启用,但只要我取消选择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;
}
答案 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;
}