我在表格视图中存储数据存在问题。
这是一个菜单应用程序,它有一个按钮,它会弹出一个表格视图并显示它们所订购的所有菜肴,我使用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];
}
答案 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
希望这可以帮助你。