【问题标题】:Create A New iOS Control创建一个新的 iOS 控件
【发布时间】:2014-06-23 19:03:15
【问题描述】:

我正在尝试为 Xcode 创建一个新控件以实现到新的 iOS 应用程序中。最终的想法是以图形方式显示足球队的形成。我意识到这都可以通过编程方式进行编码,但我想创建一个新控件来代表一个球员,然后相应地加载编队,因为我将来可能会将其他球员信息添加到该控件中。

我创建了一个 xib 视图文件,其中是用于显示其名称的标签。我尝试了以下方法,但标签的文本没有显示。我错过了什么明显的东西吗?

[我已包含正确的标题并已连接标签并将 xib 设置为新类]

xib 的头文件:

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

xib 的实现文件:

#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];

}

提前致谢!

【问题讨论】:

    标签: ios objective-c uicontrol


    【解决方案1】:

    您可能创建了一个包含标签的 xib 文件,但您似乎没有使用它。您正在创建 playerObject 类的新实例,而不是从 xib 文件中加载一个。请查看 UINib 类文档。

    【讨论】:

      【解决方案2】:

      您正在实例化您的自定义视图,而不是从 .xib 文件中加载它。 为了使其工作,请按照下列步骤操作:

      1. 让您的playerObject 继承自UIView 而不是UIControl
      2. 打开您的.xib 文件。
      3. 在左侧窗格中选择根视图。
      4. 在右侧窗格中,切换到 Identity Inspector 选项卡。
      5. 在第一个文本字段“Class”中输入playerObject
      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 是您认为描述您的应用程序/模块的其他名称。所有其他相关的自定义类都应该“共享”这个命名空间。看看 Apple 对它的类做了什么。

      希望对你有帮助!

      【讨论】:

      • @dgee4 如果它解决了您的问题,请告诉我。谢谢。
      • 仅供参考,上面的 ping 无法 ping 用户,因为他们尚未参与此帖子。
      猜你喜欢
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多