创建一个新的 iOS 控件
Posted
技术标签:
【中文标题】创建一个新的 iOS 控件【英文标题】:Create A New iOS Control 【发布时间】: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];
提前致谢!
【问题讨论】:
【参考方案1】:您可能创建了一个包含标签的 xib 文件,但您似乎没有使用它。您正在创建 playerObject
类的新实例,而不是从 xib 文件中加载一个。请查看 UINib
类文档。
【讨论】:
【参考方案2】:您正在实例化您的自定义视图,而不是从 .xib 文件中加载它。 为了使其工作,请按照下列步骤操作:
-
让您的
playerObject
继承自UIView
而不是UIControl
。
打开您的.xib
文件。
在左侧窗格中选择根视图。
在右侧窗格中,切换到 Identity Inspector 选项卡。
在第一个文本字段“Class”中输入playerObject
。
确保在 Interface Builder 中连接了所有 IBOutlets
。
执行以下操作以从 .xib
文件加载您的自定义 UIView
:
playerObject *newPlayer = (playerObject *)[[[NSBundle mainBundle] loadNibNamed:@"MyXibFilename" owner:nil options:nil] firstObject];
newPlayer.playerNameLabel = @"Lionel Messi";
请注意:我强烈建议您开始为您的类使用“命名空间”(它只是一个两个字母的前缀),例如XXPlayerObject
,XX 是您认为描述您的应用程序/模块的其他名称。所有其他相关的自定义类都应该“共享”这个命名空间。看看 Apple 对它的类做了什么。
希望对你有帮助!
【讨论】:
@dgee4 如果它解决了您的问题,请告诉我。谢谢。 仅供参考,上面的 ping 无法 ping 用户,因为他们尚未参与此帖子。以上是关于创建一个新的 iOS 控件的主要内容,如果未能解决你的问题,请参考以下文章
做一个高德地图的 iOS / Android .NET MAUI 控件系列 - 创建控件
iOS - Target-Action机制创建自己的UI控件需要了解的知识