2014-06-23 47 views
0

我想創建一個新的Xcode控件實現到一個新的iOS應用程序。最終的想法是以圖形方式展示足球隊的形成。我意識到這可以全部用編程方式編碼,但我想創建一個新的控件來表示一個玩家,然後相應地加載隊形,因爲我可能會在將來向控制添加其他玩家信息。創建一個新的iOS控件

我創建了一個xib視圖文件,其中有一個用於顯示其名稱的標籤。我嘗試了以下內容,但標籤的文字沒有顯示出來。我錯過了明顯的東西嗎?

[我已經包含了正確的頭和已連接的標籤,並在廈門國際銀行設置爲新類]爲廈門國際銀行

頭文件:爲廈門國際銀行

@interface playerObject : UIControl 
@property (nonatomic, strong) NSString *playerNameLabel; 
@end  

實現文件:

#import "playerObject.h" 
@interface playerObject() 
@property (strong, nonatomic) IBOutlet UILabel *nameLabel; 
@end 

@implementation playerObject 
- (void) setPlayerNameLabel:(NSString *)playerNameLabel 
{ 
    self.nameLabel.text = playerNameLabel; 
} 

視圖控制器實施文件:

- (void)viewDidLoad 
{ 
    ... 
    playerObject *newPlayer = [[playerObject alloc] initWithFrame:CGRectMake(10, 10, 100, 150)]; 

    [newPlayer setPlayerNameLabel:@"TEST"]; 
    [newPlayer setBackgroundColor:[UIColor redColor]]; 
    [self.view addSubview:newPlayer]; 

} 

提前致謝!

回答

0

您可能已經創建了一個包含標籤的xib文件,但是您似乎沒有使用它。您正在創建playerObject類的新實例,而不是從xib文件加載一個實例。請參閱UINib類文檔。

0

您正在實例化您的自定義視圖,而無需從.xib文件中加載它。 爲了使其工作,請按照下列步驟操作:

  1. UIView,而不是UIControl讓您playerObject繼承。
  2. 打開您的.xib文件。
  3. 在左側窗格中選擇根視圖。
  4. 在右側窗格中,切換到Identity Inspector選項卡。
  5. playerObject鍵入第一個文本字段「Class」。
  6. 確保您在Interface Builder中連接了所有IBOutlets
  7. 執行以下操作從.xib文件加載自定義UIView

    playerObject *newPlayer = (playerObject *)[[[NSBundle mainBundle] loadNibNamed:@"MyXibFilename" owner:nil options:nil] firstObject]; 
    newPlayer.playerNameLabel = @"Lionel Messi"; 
    

注題外話:我強烈建議你開始使用「命名空間」對你的類(它只是一個兩個字母前綴),例如XXPlayerObject,其中XX是您認爲描述您的應用/模塊的其他內容。所有其他相關的自定義類應該「共享」這個名稱空間。看看蘋果對它的課程做了什麼。

我希望這可以幫助你!

+0

@ dgee4請讓我知道它是否解決了您的問題。謝謝。 – mato

+0

僅供參考以上ping無法用於ping用戶,因爲他們還沒有參與此帖。 – grgarside