2012-09-02 61 views
0

我的目標是在標籤中顯示名爲文件的自定義類的對象的文本。這裏是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]; 
    [email protected]"hello"; 
    [email protected]"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不顯示普蘭帕拉斯...

謝謝求助 ! PS:我是初學者,所以這可能是一個基本的錯誤。

+1

您是否使用Interface Builder將「trackName」鏈接到UI對象? – trojanfoe

+0

是的!我認爲問題在於我如何聲明Files類和東西。事實上,如果我要求做trackName.text = @「hello」;有用 !! – Pao

回答

1

您在Files.m實現中使用了@dynamic,它告訴編譯器稍後您將爲這些屬性提供getter/setter,即使用Objective-C運行時。

我懷疑你想用@synthesize而不是@dynamic。例如,

#import "Files.h" 

@implementation Files 

@synthesize title; 
@synthesize text; 

@end 

此外,您實際上並沒有在您給我們的代碼中創建一個Files對象。 chooseFile方法似乎返回一個nil對象(假設您尚未初始化其他地方的plainpalais)。也許你應該在init方法中初始化plainpalais,例如,

- (id)init { 
    self = [super init]; 
    if (self) { 
     plainpalias = [[Files alloc] init]; 
    } 
    return self; 
} 

不要忘記release此對象dealloc(如果你不使用ARC)。

+0

感謝您的幫助...我現在正在嘗試按照您說的方式修復它。 – Pao

+0

再次感謝!我還有一個問題:我應該在哪裏初始化plainpalais?之前,我做過Files * plainpalais;在.h文件的界面中...... – Pao

+0

「Files * plainpalias;」在.h文件中只是創建一個存儲對象的地方。它實際上並不創建該對象。您可以通過將上面顯示的'init'方法添加到應用程序的.m文件來初始化它。 – mttrb