2011-10-24 26 views
0

MyGems.h如何將另一個Class文件的IBOutlet用於不同的.m文件?

#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個錯誤,可有人請幫助?這似乎很簡單,但讓我感到困惑。

回答

1

你幾乎不應該這樣做。視圖控制器(MyGems,應該命名爲MyGemsViewController)負責管理此視圖。其他班級不應進入並修改其IBOutlet。如果由MyGems管理的視圖卸載且lock1令人驚訝地變爲零,則會造成嚴重問題。

目前還不清楚在這種情況下Collect是什麼;我認爲這是另一個視圖控制器?我不清楚爲什麼unlock不是MyGemsViewController上的方法。

另外請注意,此代碼是不正確的,應該要告訴你,那是不正確投擲警告:

if (lock1.hidden = NO) { 

分配NOlock1.hidden。你的意思是使用==,但是你不應該用這種方法對NO進行測試。你應該這樣來做:

if (! lock1.hidden) { 

你必須小心測試布爾對YESNO的。有許多真值不等於YES

+0

&我不能讓MyGems成爲ViewController,因爲這是一個UINavigation應用程序,忘了提及。 –

+0

MyGems *是一個ViewController。 '@interface MyGems:UIViewController'你是什麼意思?你有沒有閱讀iOS的視圖控制器編程指南? http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html –

0

您需要確保在Collect類中有對lock1的引用,很可能您希望通過引用MyGems中的Collect類並將此視圖邏輯移回到MyGems而非您的收集模型類

+0

請問您可以發佈一個小代碼片段來了解如何做到這一點?我很少處理這些問題。謝謝! –

相關問題