使用其中的属性创建控件

时间:2012-02-20 08:02:38

标签: objective-c uiview uiviewcontroller

我控制了这样的事情

#import <Foundation/Foundation.h>

#import "AQLevelMeter.h"

    #import "AQPlayer.h"
    #import "AQRecorder.h"


@interface SpeakHereController : NSObject {

    IBOutlet UIBarButtonItem*   btn_record;
    IBOutlet UIBarButtonItem*   btn_play;
    IBOutlet UILabel*           fileDescription;
    IBOutlet AQLevelMeter*      lvlMeter_in;

    AQPlayer*                   player;
    AQRecorder*                 recorder;
    BOOL                        playbackWasInterrupted;
    BOOL                        playbackWasPaused;



}

@property (nonatomic, retain)   UIBarButtonItem     *btn_record;
@property (nonatomic, retain)   UIBarButtonItem     *btn_play;
@property (nonatomic, retain)   UILabel             *fileDescription;
@property (nonatomic, retain)   AQLevelMeter        *lvlMeter_in;

@property (readonly)            AQPlayer            *player;
@property (readonly)            AQRecorder          *recorder;
@property                       BOOL                playbackWasInterrupted;
@property                       BOOL                isReport;
@property CFStringRef           recordFilePath;


- (IBAction)record: (id) sender;
- (IBAction)play: (id) sender;
-(void) InitializeThePlayer;

@end

我们可以看到我添加了许多属性,如

   @property                        BOOL                isReport;
    @property CFStringRef           recordFilePath;

然后我创建了uiview包含这个控件

#import <UIKit/UIKit.h>

@class SpeakHereController;

@interface SpeakHereViewController : UIViewController {

    IBOutlet SpeakHereController *controller;
}

现在我想访问控件对象的属性,所以我说

- (void)viewWillAppear:(BOOL)animated {



    [self ReportDirectory];

    [controller setIsReport:self.iSReport ];
    //controller.isReport = self.iSReport ;

    [controller setRecordFilePath:(CFStringRef) self.DICOMpath];

    //controller.recordFilePath = ;


}

问题在于行

[controller setIsReport:self.iSReport ];
[controller setRecordFilePath:(CFStringRef) self.DICOMpath];

有警告说

warning: no '-setIsReport:' method found

我做了

@synthesize isReport; 
@synthesize recordFilePath;

如果我更换了@class SpeakHereController;通过#import“SpeakHereController.h”它引发了很多错误,你可以从苹果下载示例代码

如果我说controller.isReport = self.iSReport;它会在非结构或联合的

中提出成员'isReport'的错误请求

我的问题是如何调用此控件中的属性,我错过了什么

祝你好运

我试过

2 个答案:

答案 0 :(得分:1)

在SpeakHereViewController.m的顶部,你需要

import "SpeakHereController.h"

否则,当编译SpeakHereViewController.m时,它完全不知道您的SpeakHereController类有哪些方法和属性

即使有警告也应该运行正常,因为该属性确实存在。但是,我同意你的意见,需要处理警告。

答案 1 :(得分:0)

您应该在.m文件中合成这些属性。

语法如下:

@synthesize isReport, recordFilePath;