iphone导航控制器

时间:2010-09-17 19:10:06

标签: iphone view uinavigationcontroller

我正在努力更好地了解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?是这样,我会用这种方法做什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

我想要变得更好   了解   UINavigationController的。我有3个   .xibs。从.xib1我推动   .xib2。我必须将数据传递给.xib2   来自.xib1。

首先,您不在.xib之间传递数据,而是在视图控制器之间传递数据。

  

我需要将一些数据传递给.xib2   每次打开该视图。推动   每次都在堆栈上的新视图   用户选择表格中的一行,   然后按下,选择一个   行,后退,选择一行,后面是   快速创建记忆警告   并杀死该应用程序。

请发布更多与此问题相关的代码。假设您正在讨论UITableView行,那么您的应用程序应该在向导航堆栈推送/弹出视图以响应行上的点击时没有任何问题。

  

viewDidLoad方法只获取   第一次看到这个观点   这样叫我无法将数据传递给   形式。

同样,您希望在视图控制器之间传递数据,而不是视图。您可以通过在视图控制器上创建属性来轻松地执行此操作,然后在将视图控制器推入堆栈之前设置这些属性。你已经这样做了,我想你的item1属性。

  

控制的正确方法是什么   记忆在这种情况下?我可以做   每次都从堆栈中弹出xib2   他们按下后退按钮?是这样,   我会用什么方法做这个?

如果您使用标准UINavigationController来控制导航堆栈,则当用户点击后退按钮时,您无需自行管理内存; UINavigationController类将负责释放视图控制器本身。