2

UILabel本のリストを表示するために使用したテーブルビューがあります。またUIButton、そのテーブルビューで本をダウンロードする必要があります。それらの本をダウンロードした後、ラベルの色を黒色から灰色に変更する必要があります。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

書籍をダウンロードしたら、設定に値を保存します。この値を使用して、毎回条件を確認します。これにより、アプリを再起動してもラベルの色を維持できます。

于 2012-12-19T09:59:42.667 に答える
0

これをアプリケーションに保存するには、NSUserDefaultsを使用する必要があります。

于 2012-12-19T10:07:41.793 に答える
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 に答える