我希望有一个简单的问题(但我无法解决它:))我有2个 View ,在 View 1上我有UILabels,如果我导航到 View 2然后去,我可以通过单击按钮更改文本返回 View 1 文本已重置。
当 View 更改时,有什么方法可以保留标签上的文本吗?
最初我使用:
-(IBAction) napButton:
(id) sender{ nap *nap1 = [[nap alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:nap1 animated:YES];
这执行了一个简单的 View 切换。根据下面的建议,我将其更改为:
-(IBAction) napButton:
(id) sender{ nap *nap1 = [[nap alloc] initWithNibName:@"nap" bundle:nil];
[self.navigationController pushViewController:nap1];
[nap1 release]; } }
按钮不执行任何操作,我收到警告UINavigationController 可能无法响应 -pushViewController
最佳答案
使用UINavigationController
.在内存受限的设备中,这是推送或弹出新 View 同时保留先前 View 中的数据或状态的最佳方式。
UINavigationController
的实例可以在代码中或在 XIB 文件中相对轻松地创建。它被认为是一个堆栈:它有一个 Root View Controller ,然后新的 View Controller 可以被插入堆栈(通常当用户点击表中的一行时)或从堆栈中弹出(通常通过按后退按钮) )。
我们有 4 种方法用于在堆栈中导航用户:
– pushViewController:animated:
– popViewControllerAnimated:
– popToRootViewControllerAnimated:
– popToViewController:animated:
例如,如果您想从 view1 移动到 view2,则需要从 view1 执行此操作 -
SecondViewController *secondView = [[SecondViewController alloc]
initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:secondView];
[secondView release];
要返回到之前的状态,即从 view2 到 view1,您需要从 view2 执行此操作 -
[self.navigationController popViewControllerAnimated:YES];
这应该以最有效的方式解决您的问题。
关于objective-c - 更改 View 时如何保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8430547/