iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 在实例化时使用代码更改故事板中的自定义类大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个标签栏控制器和一堆相同的标签.每个选项卡的功能都不同,但UI都是相同的.在故事板中,我设计了一个选项卡的流和UI,并将其设置为基类.然后,当我创建选项卡时,我尝试对它们进行类型转换,然后将它们添加到选项卡栏,但它不起作用. 在故事板中,View Controller识别“TabView”具有自定义类“TabColor” TabRed *red = (TabRed *)[storyboard
我有一个标签栏控制器和一堆相同的标签.每个选项卡的功能都不同,但UI都是相同的.在故事板中,我设计了一个选项卡的流和UI,并将其设置为基类.然后,当我创建选项卡时,我尝试对它们进行类型转换,然后将它们添加到选项卡栏,但它不起作用. @H_673_19@ @H_673_19@在故事板中,View Controller识别“TabView”具有自定义类“TabColor”

@H_673_19@
TabRed *red = (TabRed *)[storyboard instantiateViewControllerWithIdentifier:@"TabView"];
TabBlue *blue = (TabBlue *)[storyboard instantiateViewControllerWithIdentifier:@"TabView"];
@H_673_19@然而,TabColor中的loadView方法调用,而不是TabRed / TabBlue.

@H_673_19@此外,如果我nslog它的结果是一个TabColor对象:

@H_673_19@
NSLog(@"%@",red)
@H_673_19@预期:TabRed

@H_673_19@实际:TabColor

解决方法

TL;博士: @H_673_19@ @H_673_19@故事板和xib包含序列化对象的集合.在故事板中指定类意味着在加载故事板时将获得该类的实例.获得您正在寻找的行为的一种方法使用COcoa / cocoa-touch中常见的委托模式.

@H_673_19@长版

@H_673_19@故事板和类似的xib / nib文件实际上是编码对象的集合.当您在故事板中指定某个视图是UICustomcatolorViewController时,该对象将表示为该类的实例的序列化副本.然后加载故事板并调用instantiateViewControllerWithIdentifier:时,将创建故事板中指定的类的实例并将其返回给您.在这一点上,你被困在你给的对象,但你没有运气.

@H_673_19@由于看起来你想要做不同的事情,你可以构建你的视图控制器,以便使用委托由不同的类处理该功能.

@H_673_19@创建协议以指定两个视图控制器之间要保持不同的功能.

@H_673_19@
@protocol ThingDoerProtocol <NSObject>
    -(void) doThing;
@end
@H_673_19@将一个委托属性添加到viewcontroller:

@H_673_19@
@interface TabColor
...
@property (strong,nonatomiC) thingDoerDelegate;
@H_673_19@然后让您的新对象实现协议并执行您希望它们执行的操作.

@H_673_19@
@implementation RedTabDoer
    -(void) doThing {
         NSLog(@"RedTab");
    }
@end

@implementation BlueTabDoer
    -(void) doThing {
         NSLog(@"BlueTab");
    }
@end
@H_673_19@然后在加载故事板时创建并连接这些对象.

@H_673_19@
TabColor *red = [storyboard instantiateViewControllerWithIdentifier:@"TabView"];
red.thingDoerDelegate = [[RedTabDoer new] autorelease];

TabColor *blue = [storyboard instantiateViewControllerWithIdentifier:@"TabView"];
blue.thingDoerDelegate = [[BlueTabDoer new] autorelease];
@H_673_19@这应该允许您通过更改分配给控制器委托槽的对象类型来自定义视图控制器的功能.

大佬总结

以上是大佬教程为你收集整理的objective-c – 在实例化时使用代码更改故事板中的自定义类全部内容,希望文章能够帮你解决objective-c – 在实例化时使用代码更改故事板中的自定义类所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。