ios – – [__ NSCFConstantString size]:无法识别的选择器发送到实例…?

ios – – [__ NSCFConstantString size]:无法识别的选择器发送到实例…?,第1张

概述redSegmentedControl.m redSegmentedControl.h 现在,我在另一个控制器中编写代码 // self.segmentedControl = [[redSegmentedControl alloc] initWithFrame:CGRectMake(0, 140, 320, 50)];self.segmentedControl = [[redSegmented redSegmentedControl.m

redSegmentedControl.h

现在,我在另一个控制器中编写代码

// self.segmentedControl = [[redSegmentedControl alloc] initWithFrame:CGRectMake(0,140,320,50)];self.segmentedControl = [[redSegmentedControl alloc] initWithSectionImages:@[@"List.png",@"List.png",@"List.png"] sectionSelectedImages:@[@"List.png",@"List.png"]];//[self.segmentedControl setSectionTitles:@[@"List",@"Activity",@"top Tags"]];

如果删除了注释行,它可以正常工作,但如果运行此代码,则会出错.

-[__NSCFConstantString size]: unrecognized selector sent to instance ...

我跟踪了,我在 – (voID)updateSegmentsRects方法的这些行中发现了问题.

for (UIImage *sectionImage in self.sectionImages) {            CGfloat imageWIDth = sectionImage.size.wIDth + self.segmentEdgeInset.left + self.segmentEdgeInset.right;            self.segmentWIDth = MAX(imageWIDth,self.segmentWIDth);        }

在这里,它访问放入数组的图像的大小,但给出错误,任何人都可以替换代码或告诉我原因.

解决方法 您的redSegmentedControl类要求sectionImages是UIImage对象的数组,但是上面的代码使用initWithSectionImages初始化对象,并将其传递给Nsstrings数组.因此错误.

所以大概你想改变init方法的调用者:

self.segmentedControl = [[redSegmentedControl alloc]                         initWithSectionImages:@[[UIImage imagenamed:@"List.png"],...]];

或者更改redSegmentedControl实现,以便它确实期望sectionImages是Nsstrings的数组.可能前一种选择会更好,因此调用者可以负责如何创建图像,控件不应该关心它.

总结

以上是内存溢出为你收集整理的ios – – [__ NSCFConstantString size]:无法识别的选择器发送到实例…?全部内容,希望文章能够帮你解决ios – – [__ NSCFConstantString size]:无法识别的选择器发送到实例…?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1018472.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存