2011-07-16 112 views
0

我有两个班,一个是addAlarm和第二的名称,,,Push和Pop行为很奇怪,为什么?

现在我在addAlarm(addAlarm是的UITableViewController的子类),因为其选择行,然后它去名称类,如下

 Name *ob = [[Name alloc] initWithStyle:UITableViewStyleGrouped]; 
     [self.navigationController pushViewController:ob animated:YES]; 

     [ob release]; 
     ob = nil; 

再有就是UINavigationBar的与addAlarm因为默认情况下后退按钮,而名字也的UITableViewController

的子类

我发现,当我点击名称addAlarm后退按钮,然后它可以追溯到addAlarm,其viewWillAppear方法调用,但在此之后它调用

  - (void)viewDidUnload 

  - (void)dealloc 
名称类的

我不明白为什么在执行ViewWillApear的addAlarm后,为什么要调用Name的方法,任何Idea?

+0

这是预期的行为。如果你点击后退按钮,它应该调用你离开的类的viewDidUnload和dealloc方法。这不是问题。 – Deeps

+0

但是Deeps,如何将数据保存到委托方法并在其他类中显示,而不在下一个类之前调用​​它的方法? –

+0

这个问题得到解决,然后问题就解决了,在ViewWillApear中,我正在调用[self.tableView reloadData],它现在正在接受更新的数据,因为数据在dealloc方法中更新了名称,我应该怎么做? –

回答

1

而不是在dealloc方法中传递数据您可以在下面的方法中传递数据。

-(void)viewWillDisappear:(BOOL)animated{ 

} 

另一种方法是将它存储在如下的appDelegate文件中。

在appDelegate.h文件

NSString *strName; 

@属性(非原子,保留)的NSString *则strName;

在appDelegate.m文件

@synthesize strName; 

现在,你可以在你的NameController创建应用程序的对象像下面

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

和存储值这样

appDelegate.strName = @"Value to be passed to addAlarm View" 

希望这帮帮我。

+0

谢谢Deeps,我已经解决了我的问题,但是你能告诉我Name对象会自动释放吗? –

+0

很好,你解决了。你可以在appDelegate.h文件的dealloc方法中写[strName release]。 – Deeps

+0

那么这个代表将在应用程序关闭时在应用程序的最后被调用,直到它将在内存中? –