我的目标是在标签中显示名为Files的自定义类的对象的文本。这是Files.h:
#import <Foundation/Foundation.h>
@interface Files : NSObject
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *text;
@end
这是Files.m:
#import "Files.h"
@implementation Files
@dynamic title;
@dynamic text;
@end
这是我的应用的.h文件。标签名为trackName:
#import <UIKit/UIKit.h>
#import "Files.h"
@interface FirstViewController : UIViewController
{
Files *plainpalais;
}
@property (weak, nonatomic) IBOutlet UILabel *trackName;
-(Files*) chooseFile;
@end
这是应用的.m文件:
#import "FirstViewController.h"
@interface FirstViewController ()
@end
@implementation FirstViewController
@synthesize trackName;
-(Files*)chooseFile
{
return plainpalais;
}
- (void)viewDidLoad
{
[super viewDidLoad];
plainpalais.text=@"hello";
plainpalais.title=@"plainpalais";
trackName.text=plainpalais.title;
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[self setTrackName:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
@end
问题是标签trackName没有显示plainpalais ......
感谢您的帮助!
PS:我是初学者,所以这可能是一个基本错误。答案 0 :(得分:1)
您在@dynamic
实现中使用了Files.m
,它告诉编译器您将在以后为这些属性提供getter / setter,即使用Objective-C运行时。
我怀疑您要使用@synthesize
而不是@dynamic
。例如,
#import "Files.h"
@implementation Files
@synthesize title;
@synthesize text;
@end
此外,您还没有在您提供给我们的代码中创建Files
对象。 chooseFile
方法似乎返回nil
对象(假设您尚未在其他位置初始化plainpalais
)。也许您应该在plainpalais
方法中初始化init
,例如
- (id)init {
self = [super init];
if (self) {
plainpalias = [[Files alloc] init];
}
return self;
}
不要忘记在release
中dealloc
此对象(如果您没有使用ARC)。