【问题标题】:viewDidAppear not firingviewDidAppear 没有触发
【发布时间】:2013-09-05 19:06:32
【问题描述】:

我知道有人问过这个问题,但我尝试了所有解决方案都无济于事。

我的应用程序的一个选项卡是日志

当它被选中时,会显示一个带有日志列表的日志视图控制器

我在顶部菜单栏有一个“+”来添加新日志

当我选择它时,我将添加日志视图控制器推送到堆栈上

我添加了一个新日志 - 然后我按下返回按钮

当我返回表格时,列表没有更新

我想在返回到第一个视图控制器时重新加载表中的数据,但是 返回表时不会触发 viewDidLoad、viewDidAppear 或 viewWillAppear

由于第一个屏幕被遗忘了

我将这些添加到第二个屏幕,试图找到返回按钮时发生的任何操作

-(void)viewWillDisappear{
 NSLog(@" whered it go");
}

-(void)viewDidDisAppear
{
NSLog(@" disapeeeeeearing");
}

- (void)backAction {
NSLog(@" WHAT ABOTU THIS       ");
[self.navigationController popViewControllerAnimated:YES];
}

- (void)navigationController:(UINavigationController *)navigationController      willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
[viewController viewWillAppear:animated];
NSLog(@"is ANY of this Happening");
}

当添加屏幕消失没有打印 NSLog 时,这些都不会触发

从我读到的第一个屏幕上没有响应是因为日志表从未真正离开堆栈。

当我在另一个选项卡(应用程序的不同部分)上执行此操作时没有发生这种情况

此选项卡的不同之处在于添加日志视图控制器有 5 个子视图并且可以调用模态(尽管即使我不调用它们也会失败) - 我猜它与此有关。

从日志调用到添加日志

AddViewController *controller =[[AddViewController alloc]  initWithNibName:@"AddViewController" bundle:nil];
controller.passString= newText;
[self.navigationController pushViewController:controller animated:YES];

没有任何返回代码,只需单击屏幕顶部的后退按钮即可。

如有错误请见谅

【问题讨论】:

    标签: cocoa-touch uiviewcontroller navigation


    【解决方案1】:

    那是因为你没有使用正确的方法。

    -(void)viewWillDisappear{
         NSLog(@" whered it go");
    }
    

    -(void)viewDidDisAppear
    {
        NSLog(@" disapeeeeeearing");
    }
    

    没有在任何地方声明。我相信你的意思是:

    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        NSLog(@"About to disappear");
    }
    
    - (void)viewDidDisappear:(BOOL)animated
    {
        [super viewDidDisappear:animated];
        NSLog(@"Did disappear");
    }
    

    方法区分大小写,您不能只省略参数并期望它起作用。

    【讨论】:

    • 您是绝对正确的先生 - 两者都是在退出第二个程序时触发的。非常感谢你。我已经向编译器道歉了。
    • @0x77777777 请不要误解我我很感激帮助(和更正)我应该继续前进,但我真的很困惑:一旦我正确地将这两种方法放在第二个视图控制器中(添加),第一个视图控制器中的 viewDidLoad 开始触发!在一个视图控制器中唤起这些(或超级)如何在另一个视图控制器中唤起(或唤醒)viewDidLoad?再次感谢您的帮助。
    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多