2

我有表格视图,用于UILabel显示书籍列表。此外,我还UIButton需要下载该 tableview 中的书籍。下载这些书后,我需要将标签颜色从黑色更改为灰色。现在可以UILabel在下载书后更改颜色。但是当我重新启动应用程序时,它会返回到正常模式(即)文本颜色为黑色。

这是我的代码,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{

   static NSString *CellIdentifier = @"Cell";

   cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

   if (cell == nil) 
   {
        cell = [[UITableViewCell alloc]initWithStyle: UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier];
   } 

   if(appDelegate.fontFlag==1 && [[databaseArray valueForKey:@"bookname"] containsObject:[listOfBooks objectAtIndex:indexPath.row]] )
    {
        //appDelegate.fontFlag=0;
        NSString *cellValue = [listOfBooks objectAtIndex:indexPath.row];//[downlodedBooksArray objectAtIndex:appDelegate.databaseIndex];
        Label.textColor=[UIColor grayColor];
        NSLog(@"cellValuebluecolor%@",cellValue);
        [Label setText:cellValue];


    }
    else
    {

    NSString *cellValue = [listOfBooks objectAtIndex:indexPath.row];
    [Label setText:cellValue];

    //  cell.text = cellValue;
    Label.textColor=[UIColor blackColor];
    }

    Label.backgroundColor = [UIColor whiteColor];
    [cell.contentView addSubview:Label];

return cell;
}

为什么会发生这种情况?或者即使重新启动我的应用程序以仅在下载后才能获得指定的颜色,我应该如何更改我的代码?

4

3 回答 3

0

您需要使用NSUserDefaults将其保存在应用程序中。

于 2012-12-19T10:07:41.793 回答
0

下载书籍后,在首选项中保存一个值。每次使用此值检查条件。这样,即使重新启动应用程序,您也可以保持标签的颜色。

于 2012-12-19T09:59:42.667 回答
0

将数组存储在其中NSUserDefault,当您想要检查它是否在那时下载时,从 userdefault 中检索数组并从中进行检查。请参阅NSUserDefault...的示例

AppDelegate.h文件中只声明变量...

NSUserDefaults  *userDefaults;
NSMutableArray *yourArray;

后...

AppDelegate.m填入applicationDidFinishLonching:法_

userDefaults = [NSUserDefaults standardUserDefaults];
    NSData *dataRepresentingtblArrayForSearch = [userDefaults objectForKey:@"yourArray"];
    if (dataRepresentingtblArrayForSearch != nil) {
        NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingtblArrayForSearch];
        if (oldSavedArray != nil)
            yourArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
        else
            yourArray = [[NSMutableArray alloc] init];
    } else {
        yourArray = [[NSMutableArray alloc] init];
    }
    [yourArray retain];

之后,当您想在此 UserDefaults 中插入数据时,请使用波纹管代码...

[appDelegate.yourArray addObject:yourDataString];///set your value or anything which you want to store here...
NSData *data=[NSKeyedArchiver archivedDataWithRootObject:appDelegate.yourArray];
[appDelegate.userDefaults setObject:data forKey:@"yourArray"];
[appDelegate.userDefaults synchronize];

使用您的代码检查以下情况,我只是将 userdefault 数组放在这里..

if(appDelegate.fontFlag==1 && [[appDelegate.yourArray valueForKey:@"bookname"] containsObject:[listOfBooks objectAtIndex:indexPath.row]] )
    {
        //appDelegate.fontFlag=0;
        NSString *cellValue = [listOfBooks objectAtIndex:indexPath.row];//[downlodedBooksArray objectAtIndex:appDelegate.databaseIndex];
        Label.textColor=[UIColor grayColor];
        NSLog(@"cellValuebluecolor%@",cellValue);
        [Label setText:cellValue];
    }

我希望这可以帮助你...

于 2012-12-19T10:10:02.720 回答