UISegmentedControl并添加目标

时间:2011-08-23 13:06:26

标签: iphone objective-c ios ipad uibutton

我确信这对那里的某个人来说很容易。我有一个UISegmentedControl,我用它作为按钮(以便不必使用令人讨厌的默认按钮),我无法让目标工作....代码如下

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    //read.buttonType = UIBarStyleBlackOpaque;

    UISegmentedControl* read = [[[UISegmentedControl alloc] initWithFrame:CGRectMake(5, 50, 310, 54)] autorelease];
    [read insertSegmentWithTitle:@"Read" atIndex:0 animated:NO];
    read.tintColor = [UIColor colorWithRed:0.3 green:0.3 blue:0.9 alpha:1];
    read.segmentedControlStyle = UISegmentedControlStyleBar;
    [read addTarget:self action:@selector(changeFilter:sender:) forControlEvents:UIControlEventTouchUpInside];
    [read setTag:1];
    [self.view addSubview:read];



}

然后

-(void)changeFilter:(id)sender{

}

出于某种原因,单击UISegmentedControl不会触发目标方法。

作为附录,是否有更简单的方法可以制作漂亮的UIButton?我无法在工作中访问Photoshop(虽然我确实安装了gimp),因此一种不涉及图像制作的方法会很好。我不敢相信苹果在UI中没有提供漂亮的UIButton,这似乎是一个需要的基本要素?

无论如何,感谢帮助错误的朋友。

感谢答案......我已经尝试了修复,但仍然没有解决

我现在有

[read addTarget:self action:@selector(changeFilter:) forControlEvents:UIControlEventTouchUpInside];

然后

@interface
-(void)changeFilter:(id)sender;

@implementation
-(void)changeFilter:(id)sender{}

请注意,该方法与UISegmentedControl位于同一类中。也许我应该尝试使用建议的Glass按钮API,但如果有办法避免使用第三方库,我的老板就讨厌我了!

3 个答案:

答案 0 :(得分:8)

选择器错误。它应该是action:@selector(changeFilter:),并将事件更改为forControlEvents:UIControlEventValueChanged,因为 UISegmentedControl 不会为 UIControlEventTouchUpInside 事件发送任何操作。

答案 1 :(得分:5)

.h文件你忘了把这个

     -(void)changeFilter:(id)sender;

然后

change this 

 [read addTarget:self action:@selector(changeFilter:sender:) forControlEvents:UIControlEventTouchUpInside];

To

 [read addTarget:self action:@selector(changeFilter:) forControlEvents:UIControlEventValueChanged];

答案 2 :(得分:1)

该操作将自动发送给发件人,所以只需尝试@selector(changeFilter :)。

至于你的第二个问题,ios5会帮助你...但我还不能说太多。现在,您可以使用人们制作的一些uibutton类来轻松制作一些好看的按钮。这是一个:

http://hboon.com/glass-buttons-in-iphone-apps-without-using-image-files/