选择器作为IOS中的参数

选择器作为IOS中的参数,第1张

概述我想为每个创建的按钮提出一种不同的方法. 我尝试在viewDidLoad中调用“First Image”方法,但它不起作用. 我在ViewDidLoad中的选择器有问题.没有识别“FirstImage”,这是一个没有参数的void方法. ViewController.m - (void)createFirstButton:(NSString *)myName: (SEL *)myAction{ 我想为每个创建的按钮提出一种不同的方法.
我尝试在vIEwDIDLoad中调用“First Image”方法,但它不起作用.

我在VIEwDIDLoad中的选择器有问题.没有识别“Firstimage”,这是一个没有参数的voID方法.

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中的参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1111791.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存