【问题标题】:iphone UINavigation Controlleriphone UINavigationController
【发布时间】:2011-04-13 21:15:50
【问题描述】:

我试图更好地理解 UINavigationController。我有 3 个 .xib。从.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。每次用户在表格中选择一行时,将一个新视图推送到堆栈上,然后按返回,选择一行,返回,选择一行,返回非常快速地创建一个 memoryWarning 并杀死应用程序。

如果我将视图添加为属性并检查它是否已经存在,

if (xib2 == nil) {

}

viewDidLoad 方法仅在第一次调用视图时被调用,因此我无法将数据传递给表单。

我不能使用 viewDidAppear 等,因为我不想从 .xib3 返回时加载数据。

在这种情况下控制内存的正确方法是什么?每次他们按下后退按钮时,我应该从堆栈中弹出 xib2 吗?是这样的,我会用什么方法呢?

感谢您的帮助!

【问题讨论】:

    标签: iphone view uinavigationcontroller


    【解决方案1】:

    我正在努力变得更好 的理解 UINavigationController。我有 3 .xibs。从 .xib1 我正在推动 .xib2。我必须将数据传递给 .xib2 来自 .xib1。

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

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

    请发布更多与此问题相关的代码。假设您正在谈论 UITableView 行,那么您的应用应该不会有任何问题将视图推送/弹出到导航堆栈以响应对行的点击。

    viewDidLoad 方法只获取 第一次调用视图是 调用所以我不能将我的数据传递给 表格。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多