我一直在尋找很多論壇,但它仍然讓我發瘋。 我不明白如何訪問IBOutlet實例,例如類「B」的類「A」,它嘗試更改值讓我們說實例類型是IBOutlet NSTextLabel * progressStatus with stringValue「Capturing」想要更改爲「認識」。它只能從classA自身的實例方法中調用,而不能從另一個類中調用。調用實例方法從另一個類訪問IBOutlet實例
@interface classA : NSView
{
NSTextField *progressStatus;
}
@property (assign) IBOutlet NSTextField *progressStatus;
-(void)recognizeStatus;
@end
#import "classA.h"
@implementation classA
@synthesize progressStatus;
-(void)awakeFromNib
{
[self recognizeStatus]; //successfully change the value inside progressStatus
}
-(void)recognizeStatus
{
[progressStatus setStringValue:@"Recognizing"];
NSLog(@"Progress Status : %@",progressStatus.stringValue);
}
- (void)captureOutput:(QTCaptureOutput *)captureOutput didOutputVideoFrame:(CVImageBufferRef)videoFrame withSampleBuffer:(QTSampleBuffer *)sampleBuffer fromConnection:(QTCaptureConnection*)connection
{
//code to convert videoFrame to IplImage type named frameImage
BOOL faceDetected = [classB faceDetection:frameImage];
}
@end
#import "classA.h"
@interface classB : NSObject
{
}
+(BOOL)faceDetection:(IplImage*)source;
@end
#import "classA.h"
#import "classB.h"
@implementation classB
+(BOOL)faceDetection:(IplImage*)source
{
classA *status = [[classA alloc] init];
[status recognizeStatus]; //no changes with the value inside progressStatus
//return bool type
}
@end
'//這是行不通的!'不能幫助我們理解你的問題。你期望發生什麼,你實際看到了什麼?一個崩潰,一個編譯器錯誤,當你預期它的UI不會改變? – Jonah 2012-03-23 16:52:53
即使在類B中不會調用recognitionStatus方法,它在UI中也沒有更改。我期望成功調用recogniseStatus方法,因此類A中的NSTextField會將其文本字段從「捕獲」更改爲「識別」。 – 2012-03-23 17:03:52