0

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

4

1 回答 1

1

您在实现中使用@dynamicFiles.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)。

于 2012-09-02T15:33:30.080 回答