自定义添加的单元格不会保存在表格视图中

时间:2013-08-24 22:09:27

标签: ios iphone cocoa-touch tableview cells

我有一个带有文本字段的警报视图,因此每当有人输入并按下保存按钮时,它就会放入表格视图中。当您在保存后单击单元格时,它会将您带到另一个视图。现在当你回到主页时,细胞消失了。我已经尝试了多种方法来解决它,但仍然无法做到。我是否需要添加一个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];

    }

}

1 个答案:

答案 0 :(得分: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;
    }