我希望一个简单的问题(但我无法解决:) :)我有2个视图,在视图1上我有UILabels我用按钮点击更改文本,如果我导航到视图2然后去返回查看1文本被重置。
更改视图时,有没有办法在标签上保留文字?
最初我用过:
-(IBAction) napButton:
(id) sender{ nap *nap1 = [[nap alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:nap1 animated:YES];
这执行了一个简单的视图切换。根据下面的建议,我将其更改为:
-(IBAction) napButton:
(id) sender{ nap *nap1 = [[nap alloc] initWithNibName:@"nap" bundle:nil];
[self.navigationController pushViewController:nap1];
[nap1 release]; } }
该按钮不执行任何操作,我收到警告UINavigationController may not respond to -pushViewController
答案 0 :(得分:1)
使用UINavigationController
。在内存受限设备中,这是在保留先前视图中的数据或状态的同时推送或弹出新视图的最佳方式。
UINavigationController
的实例可以相对容易地在代码或XIB文件中创建。它被认为是一个堆栈:它有一个根视图控制器,然后新的视图控制器可以被推入堆栈(通常当用户点击表中的一行时)或弹出堆栈(通常通过按下后退按钮) )。
有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];
这应该以最有效的方式解决您的问题。