表视图不存储数据

时间:2013-03-26 21:18:28

标签: ios ipad uitableview nsmutablearray

我在表格视图中存储数据存在问题。

这是一个菜单应用程序,它有一个按钮,它会弹出一个表格视图并显示它们所订购的所有菜肴,我使用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];
}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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

希望这可以帮助你。