我确信这对那里的某个人来说很容易。我有一个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,但如果有办法避免使用第三方库,我的老板就讨厌我了!
答案 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/