如何调暗UITableViewCell

时间:2015-07-06 13:11:54

标签: ios objective-c uitableview

我使用表格向用户显示图书目录。有些书是免费的,其他书是高级书。我想根据用户的帐户状态(免费或高级版)通知用户可以下载的图书。用户仍然可以查看所有书籍(封面和摘要,但不能下载)。

为此目的,我试图为包含免费用户优质图书的单元格调暗

我怎样才能使细胞变暗?我已经尝试过以前的答案,例如How do I make a UITableViewCell appear disabled?UITableview: How to Disable Selection for Some Rows but Not Others,但没有运气。为什么alpha不起作用?

我的尝试朝着这个方向发展,没有结果:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"SelectBookCell";

    SelectBookCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        cell = [[SelectBookCell alloc] init];
    }

    // Config images, title, author... information to show
    Do stuff

    // Dimmed premium books
    if([[userAccount level] intValue] <= (NSInteger)[book objectForKey:@"level"])
    {
        [cell setAlpha: 0.2f];

        cell.textLabel.alpha = 0.2f;
        cell.detailTextLabel.alpha = 0.2f;
    }
    return cell;
}

2 个答案:

答案 0 :(得分:1)

编辑:先试试吧!

cell.contentView.alpha = 0.2

而不是

cell.alpha = 0.2

我在我的项目上进行了测试,而后一个项目工作正常。

如果无效,请尝试以下操作。

我认为这一行有问题

if (cell == nil) {
    cell = [[SelectBookCell alloc] init];
}

将其更改为

if (cell == nil) {
    cell = [[SelectBookCell alloc] initWithNibName:@"SelectBookCell" bundle:nil]
}

请注意,xib文件名@“SelectBookCell”可能与您的项目不同。我不知道你的单元格是在storyboard或xib文件中。

答案 1 :(得分:1)

请在目标C中查看/阅读ItemsSource 转换easy_install(类)和Type Casting(基本类型)之间的区别。

这里有一个样本:

NSNumber

关于您的问题:

由于您使用的是默认视图NSInteger&amp; NSLog(@"Wrong#1 : %@, Value: %d", (1 == ((int)@"1")) ? @"YES" : @"NO", ((int)@"1")); NSLog(@"Wrong#2 : %@, Value: %d", (1 == ((NSInteger)@"1")) ? @"YES" : @"NO", ((NSInteger)@"1")); NSLog(@"Wrong#3 : %@, Value: %d", (1 == ((NSInteger)@1)) ? @"YES" : @"NO", ((NSInteger)@1)); NSLog(@"Wrong#4 : %@, Value: %d", (1 == ((int)@1)) ? @"YES" : @"NO", ((int)@1)); NSLog(@"Correct#1 : %@, Value: %d", (1 == [@"1" intValue]) ? @"YES" : @"NO", [@"1" intValue]); NSLog(@"Correct#2 : %@, Value: %d", (1 == [@"1" integerValue]) ? @"YES" : @"NO", [@"1" integerValue]); 我确定您必须使用.textLabel

.detailTextLabel

希望这有用...干杯。