iOS 【错误:'Changing the delegate of a tab bar managed by a tab bar controller is not allowed.'】

错误:'Changing the delegate of a tab bar managed by a tab bar controller is not allowed.'   意为不允许修tabBar的delegate属性

产生原因:设置代理的这句代码写在了 为 tabBarController 的 tabBar属性 赋值 之后

看一下错误产生的代码:(共三行正确代码,其余的是个人理解)

    // 我们想要利用KVC替换掉UITabBarViewController自带的tabBar属性
    // self.tabBar  这个属性是属于我们的UITabBarController的,不是我们自己创建的属性
    // 此处的关键在于path后面跟的是属性名,而前面的value是为这个属性赋得值

    WZYTabBar *tabBar = [[WZYTabBar alloc] init];
    
    // 设置代理的这句代码不能写在为tabBarController的tabBar属性赋值之后,不然会报错:
    // 'Changing the delegate of a tab bar managed by a tab bar controller is not allowed.' 意为不允许修改tabBar的delegate属性(此时的tabBar是被tabBarController所管理的)
    // ★ 所以要重写覆盖系统自带的东西,我们先把该设置的设置完再覆盖上去。(因为系统自带的东西一般是不让去修改的,一般是readOnly的)
    
    tabBar.delegate = self;
    
    // 这句代码设置过后,tabBar的delegate就是WZYTabBarViewController,所以这句话过后就不能再修改tabBar的delegate属性了
    
    [self setValue:tabBar forKeyPath:@"tabBar"];

//    tabBar.delegate = self;  所以这句话写在这里是错误的,上面已经解释


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值