gpt4 book ai didi

ios - 选择器作为 IOS 中的参数

转载 作者:技术小花猫 更新时间:2023-10-29 10:21:25 25 4
gpt4 key购买 nike

我想为每个创建的按钮提出不同的方法。我尝试在 viewDidLoad 中调用“FirstImage”方法,但它不起作用。

我对 ViewDidLoad 中的选择器有疑问。无法识别“FirstImage”,这是一个没有参数的无效方法。

ViewController.m

- (void)createFirstButton:(NSString *)myName: (SEL *)myAction{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn addTarget:self
action:@selector(myAction)
forControlEvents:UIControlEventTouchUpInside];
[btn setTitle:myName forState:UIControlStateNormal];
btn.frame = CGRectMake(20, 916, 120, 68);
[self.view addSubview:btn];
}

- (void)viewDidLoad{
[self createFirstButton:@"First" myAction:[self FirstImage]];
}

我所做的(我将“CreateFirstButton”更改为“CreateButton”):

ViewControler.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize myHeight;
@synthesize myWidth;
@synthesize myX;
@synthesize myY;

- (void)createButton:(NSString *)myName:(SEL)myAction:(NSUInteger)my_x:(NSUInteger)my_y:(NSUInteger)my_width:(NSUInteger)my_height
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn addTarget:self
action:myAction
forControlEvents:UIControlEventTouchUpInside];
[btn setTitle:myName forState:UIControlStateNormal];
btn.frame = CGRectMake(my_x, my_y, my_width, my_height);
[self.view addSubview:btn];
}

- (void)myXcrementation{
myX = myX + 150;
}

- (void)viewDidLoad{
myX = 20; myY = 916; myWidth = 120; myHeight = 68;
[self createButton:@"First":@selector(FirstImage):myX:myY:myWidth:myHeight];
[self myXcrementation];
[self createButton:@"Previous":@selector(PreviousImage):myX:myY:myWidth:myHeight];
[self myXcrementation];
[self createButton:@"Pause":@selector(PauseImage):myX:myY:myWidth:myHeight];
[self myXcrementation];
[self createButton:@"Next":@selector(NextImage):myX:myY:myWidth:myHeight];
[self myXcrementation];
[self createButton:@"Last":@selector(LastImage):myX:myY:myWidth:myHeight];
}

- (void)FirstImage{
current = 0;
[self SetImage];
}

-(void)SetImage{
[myImageView setImage: [myArray objectAtIndex:(current)]];
}

@end

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController{
}

@property(assign, nonatomic) NSUInteger myHeight;
@property(assign, nonatomic) NSUInteger myWidth;
@property(assign, nonatomic) NSUInteger myX;
@property(assign, nonatomic) NSUInteger myY;

@end

我重新编辑了这篇文章,没有再报错了。特别感谢大家。我花了一些时间才明白 :)

最佳答案

你必须使用 @selector 如下所示

[self createFirstButton:@"First" myAction:@selector(FirstImage)];

那么你的签名是错误的,因为 SEL 不应该是一个指针。

改变

- (void)createFirstButton:(NSString *)myName: (SEL *)myAction{

- (void)createFirstButton:(NSString *)myName: (SEL)myAction{

最后,myAction 的类型为 SEL,因此您可以将其直接传递给 UIButton 方法,如下所示

[btn addTarget:self
action:myAction
forControlEvents:UIControlEventTouchUpInside];

另外,我想补充一点,对方法使用大写名称是一种非常糟糕的做法。

关于ios - 选择器作为 IOS 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14083763/

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