Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 推送和弹出的行为很奇怪,为什么?_Iphone_Stack_Pushviewcontroller_Popviewcontroller - Fatal编程技术网

Iphone 推送和弹出的行为很奇怪,为什么?

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];

我有两个类,一个是addAlarm,第二个是Name

现在我在addAlarm(addAlarm是UITableViewController的子类)中,当它选择行时,它会转到下面的Name类

        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"