UI按钮和操作问题

发布于 2024-11-26 06:40:07 字数 853 浏览 2 评论 0原文

我想动态创建一些 UIbutton。并显示标签号。所以我成功地制作了按钮,我单击第一个按钮,它显示标签“null”,然后我单击第二个按钮,然后程序崩溃了。我不确定我的代码的哪一部分出了问题。

这是我的代码:

NSMutableArray *buttonsArray = [[NSMutableArray alloc] initWithObjects:nil];

for(int i = 0; i < [someArray count]; i++)
{
      button = [[UIButton alloc] initWithFrame:CGRectMake(btnX,btnY,btnW,btnH)];

    button.tag = i;

    [buttonsArray addObject:button];

    [[buttonsArray objectAtIndex:i] addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

    button.titleLabel.text = [NSString stringWithFormat:@"Click it"];

    [self.view addSubview:button];

    btnY = btnY + 120;
}

-(IBAction) buttonPressed:(id)sender {

UIButton *btn = (UIButton *)sender;
NSLog(@"%@", btn.tag);

}

I want to create some UIbutton dynamically. And display the tag number. So I successfully made the buttons, I clicked the first button and it shown "null" for the tag, then I click the second button then the program crashed. I am not sure which part of my code went wrong.

Here is my code:

NSMutableArray *buttonsArray = [[NSMutableArray alloc] initWithObjects:nil];

for(int i = 0; i < [someArray count]; i++)
{
      button = [[UIButton alloc] initWithFrame:CGRectMake(btnX,btnY,btnW,btnH)];

    button.tag = i;

    [buttonsArray addObject:button];

    [[buttonsArray objectAtIndex:i] addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

    button.titleLabel.text = [NSString stringWithFormat:@"Click it"];

    [self.view addSubview:button];

    btnY = btnY + 120;
}

-(IBAction) buttonPressed:(id)sender
{

UIButton *btn = (UIButton *)sender;
NSLog(@"%@", btn.tag);

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

机场等船 2024-12-03 06:40:07

那是因为 tag 是一个 NSInteger 并且您

NSLog(@"%@", btn.tag);

必须使用 %ld 作为格式说明符。做

NSLog(@"%ld", btn.tag);

That's because tag is an NSInteger and you're doing

NSLog(@"%@", btn.tag);

You must use %ld as the format specifier. Do

NSLog(@"%ld", btn.tag);
握住我的手 2024-12-03 06:40:07

将代码更改为
NSLog(@"%@",self.but.tag);
或者
NSLog(@"%@",self.but.tag.me)

Change the code as
NSLog(@"%@",self.but.tag);
or
NSLog(@"%@",self.but.tag.me)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文