iphone - 如何将另一个类文件中的 IBOutlet 使用到不同的 .m 文件中?

标签 iphone objective-c ios xcode

MyGems.h

#import <UIKit/UIKit.h>


@interface MyGems : UIViewController {

    IBOutlet UIImageView *lock1;

收集.m

#import "Collect.h"
#import "MyGems.h"

@implementation Collect

- (IBAction) unlock {

    if (lock1.hidden = NO) {

        ruby.hidden = NO;
    }
  • 我收到 4 个错误,有人可以帮忙吗?这看起来很简单,但让我很困惑。

最佳答案

你几乎不应该这样做。 View Controller (MyGems,其名称应类似于 MyGemsViewController)负责管理此 View 。其他类不应访问并修改其 IBOutlet。当 MyGems 管理的 View 卸载并且 lock1 意外地变为 nil 时,这样做会给您带来严重的问题。

在这种情况下,尚不清楚 Collect 是什么;我认为它是另一个 View Controller ?我不清楚为什么 unlock 不是 MyGemsViewController 上的方法。

另请注意,此代码不正确,并且应该向您发出警告,告诉您它不正确:

if (lock1.hidden = NO) {

NO分配给lock1.hidden。您本来打算使用 ==,但您永远不应该以这种方式测试 NO。你应该这样做:

if (! lock1.hidden) {

在针对 YESNO 测试 bool 值时必须小心。有许多真实值不等于 YES

关于iphone - 如何将另一个类文件中的 IBOutlet 使用到不同的 .m 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881931/

相关文章:

ios - 从 SDWebImage 中删除图像缓存

ios - 从两个较小的 UIImage 创建 UIImage

iphone - "<Error>: CGContextDrawImage: invalid context 0x0"

iphone sqlite 问题

iphone - UIImage 显示在具有指定字符串值的单元格中

iphone - AVAudioPlayer:MP3 文件无法在设备上播放,但可以在模拟器 (iOS 6) 中播放

ios - ScrollView 还是 CollectionView?

iphone - 如何针对 NSConnection 消息确定 performSelectorOnMainThread 的优先级?

ios - 将海拔增益信息添加到 HKWorkout

objective-c - KVO 和 NSMutableArray