使用 setNeedsDisplay

Posted

技术标签:

【中文标题】使用 setNeedsDisplay【英文标题】:use of setNeedsDisplay 【发布时间】:2013-08-06 20:03:50 【问题描述】:

我对 setNeedsDisplay 更新 UIView 的不同用法感到困惑?当我尝试使用时,我确实收到了一条错误消息(“No visible @interface for viewcontroller declares the selector setNeedsDisplay”):

[self.view setNeedsDisplay:YES];

我发现我必须忽略该参数才能使其适用于 UIViews:

[self.view setNeedsDisplay]

为什么这里不需要更新 UIView 的参数? (很多关于如何使用setNeedsDisplay的答案都建议第一种方法)

谢谢

【问题讨论】:

【参考方案1】:

区分大小写很重要,顺便说一句

将其更改为:

[self.view setNeedsDisplay];

正如您所发现的,您在 UIView 对象上调用“setNeedsDisplay”,而不是 UIViewController(这是您看到的“No visible @interface for viewcontroller declares the selector 'setNeedsDisplay'”错误)。

The place where "setNeedsDisplay:" takes a YES or NO parameter is on the Macintosh side,在 NSView 中。

【讨论】:

我摆脱了错误,谢谢。是否有理由不需要 ios 中的参数,或者它只是 iOS 方法的工作方式? That's just the way it's defined in iOS。我的猜测是,您查看了 Apple 网站上“setNeedsDisplay”的文档,看到了一个参数,但没有注意到它是针对 NSView 而不是 UIView。并且不要感觉不好。我有时也会犯这个错误(但编译器总会抓住我)。并非所有 API 在架构之间都是统一的。

以上是关于使用 setNeedsDisplay的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)