Iphone 推送和弹出的行为很奇怪,为什么?
我有两个类,一个是addAlarm,第二个是Name 现在我在addAlarm(addAlarm是UITableViewController的子类)中,当它选择行时,它会转到下面的Name类Iphone 推送和弹出的行为很奇怪,为什么?,iphone,stack,pushviewcontroller,popviewcontroller,Iphone,Stack,Pushviewcontroller,Popviewcontroller,我有两个类,一个是addAlarm,第二个是Name 现在我在addAlarm(addAlarm是UITableViewController的子类)中,当它选择行时,它会转到下面的Name类 Name *ob = [[Name alloc] initWithStyle:UITableViewStyleGrouped]; [self.navigationController pushViewController:ob animated:YES];
Name *ob = [[Name alloc] initWithStyle:UITableViewStyleGrouped];
[self.navigationController pushViewController:ob animated:YES];
[ob release];
ob = nil;
然后是UINavigationBar,默认情况下将addAlarm作为back按钮,而Name也是UITableViewController的子类
我观察到,当我在名称中单击addAlarm backbutton时,它会返回到addAlarm,并且它的视图将显示方法调用,但之后它会调用
- (void)viewDidUnload
及
类的名称
我无法理解它为什么在执行addAlarm的ViewWillapar后调用Name方法,知道吗?您可以在下面的方法中传递数据,而不是在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"
希望这有帮助。这是预期的行为。若你们点击后退按钮,它应该调用你们离开的类的viewDidUnload和dealloc方法。这不是问题所在。但更深入的是,我如何将数据保存到委托方法并在其他类中显示,而它在下一个类之前没有调用其方法?如果这个问题得到解决,那么问题将得到解决,视图中的cz willapear,我正在调用[self.tableView reloadData]现在它正在获取更新的数据,因为数据更新在dealloc方法的名称中,我应该怎么做?查看我的答案并让我知道它是否对您有帮助。您不应该更新dealloc中的数据!!!只释放那里的物体!谢谢Deeps,我已经解决了我的问题,但是你能告诉我Name对象是否会自动释放吗?很好,你已经解决了。您可以在appDelegate.h文件的dealloc方法中写入[strName release]。然后,当应用程序关闭时,将在应用程序的最后一个阶段调用此委托,直到它将在内存中?是的。你可以在你不想要它的时候释放它并使它为零。
appDelegate.strName = @"Value to be passed to addAlarm View"