【问题标题】:Objective-C. DismissVC with the delegate目标-C。 DismissVC 与委托
【发布时间】:2021-05-06 12:04:06
【问题描述】:

我有一个 VC,我们称之为 UserInfoVC,它是 UIViewController 的子类。 UserInfoVC 拥有另一个 UIViewUIView 拥有一个 UIButton。 使用自定义协议,从带有 UIButtonUIView 中,当点击按钮时,我想关闭该 UserInfoVC(提供了 vc模态)。

所以我在我的 UserInfoVC

中创建了该方法
-(void)dismissVC {
    [self dismissVC];
}

接下来,从协议方法中调用该方法,如下所示:

- (void)didTapGetFollowersForUser:(User *)user {
    if (self.user.followers == 0) {
        NSLog(@"No followers for that guy, sorry");
    } else {
        [self dismissVC];
        [self.delegate didRequestFollowersForUsername:user.login];
    }
}

我收到了[self dismissVC] 行的错误表单:线程 1:EXC_BAD_ACCESS (code=2, address=0x16cb87ff0)

我想补充一点,我目前正在学习 Objective-C。我正在尝试翻译我以前的一些项目并查看其中的差异。 Swift 中完全相同的代码对我来说效果很好。

非常感谢您的帮助。

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    您使用此方法创建了一个无限循环:

    -(void)dismissVC {
        [self dismissVC];
    }
    

    [self dismissVC] 调用将调用相同的方法。

    【讨论】:

    • 谢谢老哥我不知道怎么没看到!
    • 你知道为什么在我的 VC 中创建一个方法并从协议方法调用它不起作用吗?我像这样创建它并调用了相同的错误 -(void)dismissVCModally { [self dismissViewControllerAnimated:YES completion:nil]; }
    • 你不能dismiss同一个UIViewController,dismiss必须在呈现UserInfoVC的ViewController中调用
    • 我正在查看我一直在学习的 Swift 编程课程中的代码。同样的方法在那里有效。你知道是什么造成了这种差异吗?
    • 您的UserInfoVC 可能是由另一个VC 提供的,我们称之为UsersVCdismissVCModally 方法应该调用UsersVC 上的方法,该方法调用dismissViewControllerAnimated 方法。另一种选择是在UserInfoVC 中调用removeFromParent 而不是dismissViewControllerAnimated
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2012-01-18
    相关资源
    最近更新 更多