OGeek|极客世界-中国程序员成长平台

标题: ios - 通过 topviewcontroller 在自定义类上设置委托(delegate)的简洁方法 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 17:30
标题: ios - 通过 topviewcontroller 在自定义类上设置委托(delegate)的简洁方法

我定义了一个类NewViewController,它显示了一个在应用程序中添加新项目的屏幕,它被包装在一个UINavigationController 中。我想在这个 UIViewController 上设置一个 delegate,我目前在 prepareForSegue 方法中这样做:

UINavigationController *navController = segue.destinationViewController;
NewViewController *newViewController = (NewViewController *)navController.topViewController;
[newViewController setDelegate:self];

这行得通,但我觉得这并不优雅,也不是我应该这样做的方式。获得此结果的最佳方法是什么?

Edit:NewViewController中的delegateNewViewController中的所有字段都填写完毕并提交后调用。目前,这是唯一来自 NewViewControllerdelegated。以模态方式显示 NewViewControllerUIViewController 是设置为 delegate 的内容(在本例中为 self)。



Best Answer-推荐答案


我认为这种方法很好,尽管您可能需要进行更多的错误检查以防万一。如果这是一个命名的 segue,您可以检查 segue.identifier 以确保这是您期望的 View Controller 。我也会像这样检查类(class):

if ([segue.destinationViewController isKindOfClass:[UINavigationController class]])
{
    UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
    if ([navController.topViewController isKindOfClass:[NewViewController class]])
    {
        NewViewController *newViewController = (NewViewController *)navController.topViewController;
        [newViewController setDelegate:self];
    }
}

关于ios - 通过 topviewcontroller 在自定义类上设置委托(delegate)的简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20741619/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4