2013-08-24 58 views
0

我有一個文本框的警報視圖,所以無論何時只要有人輸入並按下保存按鈕它放在表視圖。當您保存後點擊單元格時,會將您帶到不同的視圖。現在,當你回到主頁時,細胞消失。我已經嘗試了多種方法來搞清楚,但仍然無法實現。我是否需要添加一個plist,以便每次添加一個單元格時將其保存到plist中,如果是的話,我會從哪裏啓動?自定義添加的單元格不會保存在表格視圖

此代碼是在我的表視圖控制器

- (IBAction)add:(id)sender { 

NSLog(@"%@",tableData); 
UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"My Favs" message:@"Hello" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save", nil]; 
alert.alertViewStyle = UIAlertViewStylePlainTextInput; 
UITextField * alertTextField = [alert textFieldAtIndex:0]; 
alertTextField.enablesReturnKeyAutomatically = YES; 
alertTextField.placeholder = @"example"; 
[alert show]; 
return; 


} 


-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
     NSLog(@"%@",tableData); 
    //Only do the following action if the user hits the ok button 
    if (buttonIndex == 1){ 

       NSString *tapTextField = [alertView textFieldAtIndex:0].text; 

       if (!tableData) 
         { 
       tableData = [[NSMutableArray alloc]init]; 
              } 

       [tableData insertObject:tapTextField atIndex:0]; 

       [myTableView reloadData]; 

    } 

} 

回答

0

我想tableData當你回來的主頁被越來越釋放。如果tableData不是一個龐大的陣列,則可以將其存儲在NSUserDefaults中。這樣,當你回到桌面時,你總是可以撤回數據。看看這個代碼。每次向陣列添加任何內容時,它都會將tableData存儲在NSUserDefaults中。讓我知道這是否適合你。

#import "ViewController.h" 

    @interface ViewController() <UIAlertViewDelegate,UITableViewDataSource,UITableViewDelegate> 

    @property (weak, nonatomic) IBOutlet UITableView *myTableView; 
    @property (nonatomic,strong) NSMutableArray *tableData; 
    @end 

    @implementation ViewController 


    -(NSMutableArray *)tableData 
    { 
     if(!_tableData){ 
      NSMutableArray *data = [[NSUserDefaults standardUserDefaults]objectForKey:@"data"]; 
      if(!data){ 
       _tableData = [[NSMutableArray alloc]init]; 
      }else{ 
       _tableData = [data mutableCopy]; 
      } 
     } 
     return _tableData; 
    } 


    - (IBAction)add:(UIButton *)sender { 
     UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"My Favs" message:@"Hello" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save", nil]; 
     alert.alertViewStyle = UIAlertViewStylePlainTextInput; 
     UITextField * alertTextField = [alert textFieldAtIndex:0]; 
     alertTextField.enablesReturnKeyAutomatically = YES; 
     alertTextField.placeholder = @"example"; 
     [alert show]; 
    } 

    -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
    { 
     if (buttonIndex == 1){ 

      NSString *tapTextField = [alertView textFieldAtIndex:0].text; 
      [self.tableData insertObject:tapTextField atIndex:0]; 
      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
      [defaults setObject:self.tableData forKey:@"data"]; 
      [defaults synchronize]; 
      [self.myTableView reloadData]; 

     } 

    } 

    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    { 
     return[self.tableData count]; 
    } 
    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
    { 
     return 1; 
    } 


    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"dataCell" forIndexPath:indexPath]; 
     if(self.tableData.count > 0){ 
      cell.textLabel.text = self.tableData[indexPath.row]; 

     } 
     return cell; 
    } 
+0

解決了一些代碼後,它的工作完全謝謝,但我測試了它的刪除方法,它不斷回來,當我去到主頁後被刪除。你如何直接從NSUserDefault中刪除它? @Yan – Maroun

+0

從來沒有我實際上通過把NSUserDefaults *默認值= [NSUserDefaults standardUserDefaults]; [默認removeObjectFor – Maroun

+0

這太好了。關於刪除方法,您可以從tableData數組中刪除項目,然後將其保存回NSUserDefaults,而不是從中刪除tableData。 – Yan

相關問題