如何将另一个Class文件中的IBOutlet用于另一个.m文件?

时间:2011-10-24 20:59:22

标签: iphone objective-c ios xcode

MyGems.h

#import <UIKit/UIKit.h>


@interface MyGems : UIViewController {

    IBOutlet UIImageView *lock1;

Collect.m

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

@implementation Collect

- (IBAction) unlock {

    if (lock1.hidden = NO) {

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

2 个答案:

答案 0 :(得分:1)

你几乎不应该这样做。视图控制器(MyGems,应该命名为MyGemsViewController)负责管理此视图。其他类不应该进入并修改其IBOutlets。当MyGems管理的视图卸载并且lock1出乎意料地变为零时,这样做会导致严重的问题。

目前还不清楚Collect在这种情况下是什么;我假设它是另一个视图控制器?我不清楚为什么unlock不是MyGemsViewController上的方法。

另请注意,此代码不正确,应向您发出警告,告诉您错误:

if (lock1.hidden = NO) {

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

if (! lock1.hidden) {

您必须小心测试针对YESNO的布尔值。有许多真正的值不等于YES

答案 1 :(得分:0)

你需要确保在Collect类中有对lock1的引用,很可能你想通过在MyGems中引用Collect类然后将这个视图逻辑移回MyGems而不是你的收集模型类