-[UITableViewCell setLayoutMargins:]:无法识别的选择器发送到 iphone 4 中的实例错误

Posted

技术标签:

【中文标题】-[UITableViewCell setLayoutMargins:]:无法识别的选择器发送到 iphone 4 中的实例错误【英文标题】:-[UITableViewCell setLayoutMargins:]: unrecognized selector sent to instance error in iphone 4 【发布时间】:2015-05-18 11:07:32 【问题描述】:

我有一个应用程序,它在除 iPhone 4 之外的所有 iPhone 版本中都能正常工作。它给出了以下错误。

-[UITableViewCell setLayoutMargins:]: unrecognized selector sent to instance 0x175f01b0

谁能帮助我这次崩溃的原因是什么?如何解决这个问题?

【问题讨论】:

我的猜测:layoutMargins 被调用,但它仅在 ios8+ 后可用,而您的 iPhone 4 不在 iOS8 上。 检查 respondToSelector ***.com/questions/18365049/… 【参考方案1】:

如果您查看 UIView.h 或 UIView 文档UIView layoutMargings property,您可能会注意到此属性仅适用于 iOS 8 及更高版本。

一旦您在 iPhone 4 上运行您的应用程序并且它不支持此版本的 iOS (iOS 8)iPhone 4 versions of iOS supported,您应该对您的代码执行验证以检查 API 方法是否可用。你也可以查看iOS的版本,这是你的选择。

我不知道您的实现,但作为一种快速修复,您可以检查单元格的实例是否响应选择器,并执行正确的实现。

例子:

UITableViewCell *tableViewCell = [[UITableViewCell alloc] init];
if ([tableViewCell respondsToSelector:@selector(setLayoutMargins:)]) 
    <# Your code here #>

要检查 iOS 版本,您应该使用宏或函数,以保持代码简单。只需在此处查看有关以下方面的更多问题:如何查看 iOS 版本? 或查看 github repo carlj/CJAMacros

希望能有所帮助;)

【讨论】:

以上是关于-[UITableViewCell setLayoutMargins:]:无法识别的选择器发送到 iphone 4 中的实例错误的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 中的 UIDatePicker 更新 UITableViewCell 文本标签

突出显示的 UITableViewCell 和选定的 UITableViewCell 有啥区别?

Java图形化界面设计——布局管理器之null布局(空布局)

斯威夫特 - UITableViewCell?不能转换为 UITableViewCell

UITableviewcell的性能问题

UITableViewCell 上的动画按钮而不影响其他 UITableViewCell