gpt4 book ai didi

ios - 已加载的 UIView 元素的更改

转载 作者:行者123 更新时间:2023-11-28 22:39:34 24 4
gpt4 key购买 nike

我将 UIView 加载到 ViewController 中,并希望在加载后进行更改(当您单击该 UIView 以更改文本颜色,例如)

      @interface CategoryMenu : UIView
{
UIImageView *img;
UIButton *disclosureBtn;
UIButton *actionView;
UILabel *titleLabel;
}
@property (nonatomic,retain) IBOutlet UIImageView *img;
@property (nonatomic,retain) IBOutlet UIButton *disclosureBtn;
@property (nonatomic,retain) IBOutlet UIButton *actionView;
@property (nonatomic,retain) IBOutlet UILabel *titleLabel;

通过这种方式,我已将此 UIView 加载到 UIViewController 的 中需要的地方。

  -(void)showSubviews
{
int x = 0;
for (int i = 0; i < array.count ; i++)
{
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"CustomMenu" owner:self options:nil];

CategoryMenu* tempUserView = [nibViews objectAtIndex:0];
tempUserView.userInteractionEnabled = YES;
[tempUserView setFrame:CGRectMake(0, x, 280, 50)];
x+=60;

tempUserView.tag = i;

tempUserView.titleLabel.text = [array objectAtIndex:i];
[tempUserView.actionView addTarget:self action:@selector(ExtendedCollapsed:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:tempUserView];
}

现在,当您推送 UIView 时,除了操作本身,我还想更改 UILabel 文本的颜色。

-(void)ExtendedCollapsed:(id)sender
{
NSLog(@"[self.view subviews] = %@",[self.view subviews]);
UIView *view1 = (UIView *)sender;

for(UIView *view in [self.view subviews])
{
NSLog(@"view = %@ \n ", view);

if([view isKindOfClass:[CategoryMenu class]])
{
if (view.tag == view1.tag)
{
NSLog(@"We find the view !!!!");

CategoryMenu* tempUserView = (CategoryMenu*)view1;

NSLog(@"tempUserView = %@ \n ", tempUserView);

tempUserView.titleLabel.text = @"Text Changed";
tempUserView.titleLabel.textColor = [UIColor whiteColor];

NSLog(@"tempUserView.titleLabel.text = %@",tempUserView.titleLabel.text);

break;
}
}
else
{
NSLog(@"view is not a button");
}
}

}

没有看到之前加载的 UIViews 有任何变化。

有人可以帮我提点建议吗?谢谢

最佳答案

-(void)ExtendedCollapsed:(id)sender中的sender参数是你的 UIButton *actionView而不是 CategoryMenu .

我想你的 CategoryMenu 中有一个方法设置您的 actionView.tag 的类实现给你的CategoryMenu对象 tag所以你可以在你的循环中比较它们 -(void)ExtendedCollapsed:(id)sender并找到对应的CategoryMenu

如果是这样,您甚至不必这样做,只需调用 sender.superview你会得到 CategoryMenu对应于按下的对象 actionView .如果[sender.superview isKindOfClass:[CategoryMenu class]] == TRUE , 你可以开始了。

然后,在改变了tempUserView.titleLabel的颜色之后, 尝试调用 [tempUserView setNeedsLayout] .

该方法现在应该如下所示:

- (void)ExtendedCollapsed:(id)sender {
if ([sender isKindOfClass:[UIButton class]]) {
if ([sender.superview isKindOfClass:[CategoryMenu class]]) {
CategoryMenu *tempUserView = (CategoryMenu *)sender.superview;
tempUserView.titleLabel.text = @"Text Changed";
tempUserView.titleLabel.textColor = [UIColor whiteColor];
[tempUserView setNeedsLayout];
}
}
}

关于ios - 已加载的 UIView 元素的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14957088/

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