不可能在标签中显示对象的文本

时间:2012-09-02 15:00:42

标签: xcode object text label

我的目标是在标签中显示名为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:我是初学者,所以这可能是一个基本错误。

1 个答案:

答案 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;
}

不要忘记在releasedealloc此对象(如果您没有使用ARC)。