gpt4 book ai didi

ios - 从 NSArray 设置 UISegmentedControl 的标题

转载 作者:行者123 更新时间:2023-11-29 03:58:41 25 4
gpt4 key购买 nike

我尝试对 UISegmentedControl 进行子类化。
我从 View 传递一个 NSArray 并尝试从该 NSArray 设置 UISegmentedControl 的标题。
我使用了 initWithArray 方法,但它没有设置数组中的值。

这是我的 UISegmentedControl 子类。

WTSegmentedControl.h

@interface WTSegmentedControl : UISegmentedControl {

}
@end

WTSegmentedControl.m

#import "WTSegmentedControl.h"

@implementation WTSegmentedControl

- (id)initWithItems:(NSArray *)items {
if (self = [super initWithItems:items]) {

}
return self;
}

现在从 View 中我正在调用这个方法。

我已经这样连接 socket :

@property (nonatomic,strong) IBOutlet WTSegmentedControl  *control;

- (void)viewDidLoad {
NSArray *names = [[NSArray alloc] initWithObjects:@"yes", @"no", nil];
control = [[WTSegmentedControl alloc] initWithItems:names];
}

NSArray 正确传递,但 titles 未设置。

有人可以帮我解决这个问题吗?

最佳答案

好的,那么您是在 Interface Builder 中还是通过代码创建控件!?你不能两者兼而有之。如果您想在代码中创建它,请删除属性中的 IBOutlet 部分,并在初始化后将控件添加到 subview 中:

// adding the control by code
- (void)viewDidLoad
{
[super viewDidLoad];

NSArray *names = [[NSArray alloc] initWithObjects:@"yes", @"no", nil];
control = [[WTSegmentedControl alloc] initWithItems:names];
control.frame = CGRectMake(x,z,width,height);
[self.view addSubview: control];
}

但是如果你想在InterfaceBuilder中创建它,你不应该重新初始化它。在 Interface Builder 中设置自定义类,然后设置标题,如下所示:

// using Interface Builder
- (void)viewDidLoad
{
[super viewDidLoad];

NSArray *names = [[NSArray alloc] initWithObjects:@"yes", @"no", nil];
[names enumerateObjectsUsingBlock:^(NSString *title, NSUInteger idx, BOOL *stop) {
[control setTitle:title forSegmentAtIndex:idx];
}];
}

关于ios - 从 NSArray 设置 UISegmentedControl 的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16163647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com