0

我在表格视图上存储数据时遇到问题。

这是一个菜单应用程序,有一个按钮,该按钮将在表格视图上弹出并显示他们订购的所有菜肴,我使用 NSMutableArray 来存储数据,但是每当我关闭表格视图时,表格中的数据将重置为初始状态,即空表。

我该怎么做才能解决这个问题,感谢您的帮助!

我正在使用 FPPopover 库来显示弹出表视图,代码如下:

- (IBAction)revealOrderList:(id)sender
{
    SAFE_ARC_RELEASE(popover); popover=nil;

    OrderListViewController *controller = [[OrderListViewController alloc] initWithStyle:UITableViewStylePlain];
    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:controller];
    SAFE_ARC_RELEASE(controller); controller=nil;

    popover = [[FPPopoverController alloc] initWithViewController:nc];
    popover.tint = FPPopoverDefaultTint;
    popover.contentSize = CGSizeMake(300, 500);
    [popover presentPopoverFromView:sender];
}

在弹出的表格视图中:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationItem.leftBarButtonItem = self.editButtonItem;

    orderList = [[NSMutableArray alloc] initWithObjects:@"One", @"Two", @"Three", nil];

    //add the add button
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject)];
    self.navigationItem.rightBarButtonItem = addButton;
}

- (void)insertNewObject
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Add new thing"
                                                message:@""
                                               delegate:self
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"OK", nil];

    //Set the style of UIAlertView
    alert.alertViewStyle = UIAlertViewStylePlainTextInput;

    //Show the UIAlertView
    [alert show];
}
4

2 回答 2

0

既然您说表格视图最初确实正确存储了数据,我想您已经将表格视图正确连接到数据源。如果我不得不猜测数据消失的原因,那么,当你关闭表时,你释放了它的控制器,从而释放了它的数据。我建议允许在打开表时将初始数据传递给表的控制器。

如果不是这种情况,发布一些相关代码确实有助于找到答案。

于 2013-03-26T21:47:10.113 回答
0

您的数据不会自行存储。您可以在数组中输入初始数据,但要保存新数据,您需要核心数据或以其他方式NSUserDefaults将新数据保存到文件或数据库中。Tim roadley 有一套很棒的教程来处理这里的核心数据是链接:http ://timroadley.com/tutorials-index/

它还取决于您尝试保存的数据量。如果数量巨大,那么 SQL 数据库会更好。尝试其中一个NSUserDefaults或核心数据。但是仅通过设置数组就无法保存新数据。该数组将仅显示您通过代码在其中估算的原始数据。苹果也有一个很好的保存数据的例子。尝试搜索示例代码 Bird Watching。更好的是这里的链接:http: //developer.apple.com/library/IOs/ipad/#documentation/iPhone/Conceptual/SecondiOSAppTutorial/GettingStarted/GettingStarted.html

希望这可以帮助你。

于 2013-03-26T22:08:09.437 回答