2012-05-05 5 views
2

NSUserDefaultsでデータを保存し、テーブルビューで表示しようとしています。私はすでに4つのテキストデータを配列(dataArray)に設定しているので、テーブルビューで見ることができます。テーブルビューにデータをロードできませんでした。私は何かを逃していますか?NSUserDefaultデータを保存してテーブルビューで表示

ありがとうございます。

-(IBAction)save{ 

NSUserDefaults *add1 = [NSUserDefaults standardUserDefaults]; 
[add1 setObject:txt1 forKey:@"txt1"]; 
[add1 setObject:txt2 forKey:@"txt2"]; 
[add1 setObject:txt3 forKey:@"txt3"]; 
[add1 setObject:txt4 forKey:@"txt4"]; 

[add1 synchronize]; 
} 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
self.dataArray = [NSArray arrayWithObjects:[prefs objectForKey:@"txt1"], [prefs objectForKey:@"txt2"], [prefs objectForKey:@"txt3"],[prefs objectForKey:@"txt4"] nil]; 
} 


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

// Set up the number of rows 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [dataArray count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *string = [dataArray objectAtIndex:indexPath.row]; 
    static NSString *CellIdentifier = @"Cell"; 

    UITableView *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
} 
+1

なぜあなたは、行で4回[NSUserDefaults standardUserDefaults]をつかんでいますか? –

+0

@ H2CO3あなたに投稿していただきありがとうございます...私は4つのテキストフィールドを持っており、私は[NSUserDefaults standardUserDefaults]を各フィールドに対して4回呼び出す必要があると考えました。私が間違っている場合は私を修正してください、私はXcodeに親切です。 –

+0

@LuaiKalkatawiあなたは 'add1'だけを使用して各オブジェクトを設定することができますが、変更を適用するにはuserdefaultを同期させる必要があります。下の私の答えを見てください。 – Mat

答えて

1

あなたはNSUserDefaultsの状態を保存するために[yourUserDefaultObject synchronize];を呼び出す必要がありますが、あなたは本当にNSUserDefaultsの4つのオブジェクトを作成する必要はありません、あなたはそれを一度作成し、同じインスタンス上setObject:forKey:を呼び出すことができますし、 synchronize
cell.textLabel.text=string;を設定して、cellForRowAtIndexPathコールバックのセルのラベルを設定します。あなたはtableviewcellをALLOCとテキストラベルに

テキストを割り当てる必要が

+0

どこで[yourUserDefaultObject synchronize]を呼び出す必要がありますか? ?また、私は 'NSUserDefault'を1に減らしました。感謝のマット –

+0

オブジェクトを設定した後、最後の 'setObject:forKey:'の直後に呼び出さなければなりません。 – Mat

+0

私は自分のコードを編集しました。私は正しいことを望んでいます。 –

1

まずシンクロのnsuserdefaultsと

は、あなたのcellForRowAtindexpathメソッドで次のコードを追加します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *string = [dataArray objectAtIndex:indexPath.row]; 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if(cell==nil) 
{ 
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} 
    cell.textLabel.text=string; 

    return cell; 
} 
+0

は、私はあなたが 'return'なステートメントが欠落している、このメッセージ「型のオブジェクトに見つからないproportyテキストlable『のUITableView』」 –

+0

@Bhoomiを持っているあなたにブーミをありがとうございます。 – Mat

+0

@Luai更新されたanswer.Replace UITableViewを参照してください.UITableViewCell – Bhoomi

0

デュードは、次の行を追加しますので、セルのどこかにテストを追加する必要があります。それでtablviewcell.に表示することができます可能であれば、まず配列全体をNSUserDefaultsに保存するよりも配列を作成する方が時間を節約して、それをコーディングするのが良い方法です。

cell.textLabel.text=string; 

編集>>>

UILabel *label; 
label = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 50, 40)]; 

label.text = string; 

//または

label.text = @"Hi I am here.."; 

label.backgroundColor = [UIColor greenColor]; 
label.textColor = [UIColor whiteColor]; 
[cell addSubview:label]; 
+0

ありがとう作品ありがとうございました拳を編集しました。 –

+0

は私の編集した答えを参照してくださいを得たコードを追加した後 – Nit

+0

...テーブルビューは、私はこのメッセージ「textLableは型のオブジェクトに見つからないproporty 『のUITableView』」 –

関連する問題