2012-05-05 62 views
2

我想通過NSUserDefaults保存我的數據並在表格視圖中查看它。我已經將四個文本數據設置爲數組(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

你爲什麼要抓住[NSUserDefaults的standardUserDefaults] 4連勝倍? – 2012-05-05 09:53:58

+0

@ H2CO3謝謝你發佈......我有四個文本字段,我想我需要爲每個字段調用[NSUserDefaults standardUserDefaults] 4次。如果我錯了,請糾正我,我對Xcode很新。 –

+0

@LaiKalkatawi你可以使用'add1',然後設置它上面的每個對象,但是你需要同步userdefault來應用更改......請參閱下面的答案。 – Mat

回答

1

你必須調用[yourUserDefaultObject synchronize];保存NSUserDefaults的狀態,但你並不真的需要創建的NSUserDefaults的對象4,你可以創建它一次,然後在相同的實例調用setObject:forKey:和然後synchronize
然後,只需設置cell.textLabel.text=string;即可在cellForRowAtIndexPath回調中設置單元格的標籤。

+0

我應該在哪裏調用[yourUserDefaultObject synchronize]; ?此外,我已將「NSUserDefault」降爲一個。謝謝Mat –

+0

你必須在設置對象之後調用它,所以緊跟在最後一個'setObject:forKey:'之後。 – Mat

+0

我編輯了我的代碼,我希望我做對了。 –

1

首先syncronize NSUserDefaults的和

您需要的Alloc的tableviewcell並指定文本的文本標籤

添加下面的代碼在你的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

謝謝土之棧我有UITableView的「‘ –

+0

@Bhoomi你錯過了'return' statment此消息’的類型的對象沒有找到proporty文本拉布勒」。 – Mat

+0

@Luai查看更新後的答案。用UITableViewCell替換UITableView – 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

謝謝後,我加入,我得到這個消息的代碼的UITableView「proporty textLable的類型的對象未找到‘’」 –

+0

看到我的編輯答案... – Nit

+0

我什麼都沒用拳頭編輯了一個。 –

相關問題