• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 通过 topviewcontroller 在自定义类上设置委托(delegate)的简洁方法

[复制链接]
菜鸟教程小白 发表于 2022-12-12 17:30:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我定义了一个类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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap