我正在努力更好地了解UINavigationController。我有3个.xibs。从.xib1我推送到.xib2。我必须从.xib1将数据传递给.xib2。
Controller1 *selectcity = [[Controller1 alloc]initWithNibName:@"Controller1" bundle:nil];
selectcity.item1 = @"hi";
// Push the next view onto our stack
[self.navigationController pushViewController:selectcity animated:YES];
[selectcity release];
每次打开该视图时,我都需要将一些数据传递给.xib2。每次用户选择表中的行,然后按回,选择行,返回,选择行,返回时,就会将新视图推送到堆栈,这样可以非常快速地创建内存警报并终止应用程序。
如果我将视图添加为属性并检查它是否已存在,
if (xib2 == nil) {
}
viewDidLoad方法仅在第一次调用视图时被调用,因此我无法将数据传递给表单。
我无法使用viewDidAppear等,因为我不希望从.xib3返回时加载数据。
在这种情况下控制内存的正确方法是什么?每次按下后退按钮时,我是否应该从堆栈中弹出xib2?是这样,我会用这种方法做什么?
感谢您的帮助!
答案 0 :(得分:0)
我想要变得更好 了解 UINavigationController的。我有3个 .xibs。从.xib1我推动 .xib2。我必须将数据传递给.xib2 来自.xib1。
首先,您不在.xib之间传递数据,而是在视图控制器之间传递数据。
我需要将一些数据传递给.xib2 每次打开该视图。推动 每次都在堆栈上的新视图 用户选择表格中的一行, 然后按下,选择一个 行,后退,选择一行,后面是 快速创建记忆警告 并杀死该应用程序。
请发布更多与此问题相关的代码。假设您正在讨论UITableView
行,那么您的应用程序应该在向导航堆栈推送/弹出视图以响应行上的点击时没有任何问题。
viewDidLoad方法只获取 第一次看到这个观点 这样叫我无法将数据传递给 形式。
同样,您希望在视图控制器之间传递数据,而不是视图。您可以通过在视图控制器上创建属性来轻松地执行此操作,然后在将视图控制器推入堆栈之前设置这些属性。你已经这样做了,我想你的item1
属性。
控制的正确方法是什么 记忆在这种情况下?我可以做 每次都从堆栈中弹出xib2 他们按下后退按钮?是这样, 我会用什么方法做这个?
如果您使用标准UINavigationController
来控制导航堆栈,则当用户点击后退按钮时,您无需自行管理内存; UINavigationController
类将负责释放视图控制器本身。