创建带有其中属性的控件

发布于 2025-01-07 18:25:42 字数 2524 浏览 3 评论 0原文

我有类似这样的控件

#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”的错误请求

我的问题是如何调用此控件中的属性,我是否遗漏了一些东西

最好的问候

我尝试过的

I have control something like this

#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

as we can see I added many properties like

   @property                        BOOL                isReport;
    @property CFStringRef           recordFilePath;

then I created uiview contains this control

#import <UIKit/UIKit.h>

@class SpeakHereController;

@interface SpeakHereViewController : UIViewController {

    IBOutlet SpeakHereController *controller;
}

Now I want to access the properties of the control object so I say

- (void)viewWillAppear:(BOOL)animated {



    [self ReportDirectory];

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

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

    //controller.recordFilePath = ;


}

the problem is that at the lines

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

there is warning say that

warning: no '-setIsReport:' method found

I made

@synthesize isReport; 
@synthesize recordFilePath;

also if I replaced @class SpeakHereController; by #import "SpeakHereController.h" it raise a lot of errors , U can download the sample code from apple

and if I said controller.isReport = self.iSReport ; it raise error request for member 'isReport' in something not a structure or union

My question is how to call the properties in this control , am I missing something

Best regards

I tried

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟燃烟灭 2025-01-14 18:25:42

在 SpeakHereViewController.m 的顶部,您将需要

import "SpeakHereController.h"

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

即使出现警告,它也应该运行良好,因为该属性确实存在。不过,我同意你的观点,即需要处理该警告。

At the top of SpeakHereViewController.m you will need

import "SpeakHereController.h"

Otherwise when SpeakHereViewController.m is compiled, it is completely unaware of what methods and properties your SpeakHereController class has

It should run fine even with the warning because the property does exist. However, I agree with you that the warning needs to be dealt with.

诺曦 2025-01-14 18:25:42

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

语法如下:

@synthesize isReport, recordFilePath;

You should synthesize those properties in .m file.

The syntax is like:

@synthesize isReport, recordFilePath;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文