UISegmentedControl и добавление целей - PullRequest
6 голосов
/ 23 августа 2011

Я уверен, что это легко для кого-то там.У меня есть 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 не запускает целевой метод.

В качестве дополнения, есть ли более простой способ сделать красивые UIButtons?У меня нет доступа к Photoshop на работе (хотя у меня установлен gimp), так что способ, который не включает создание изображений, был бы хорош.Я не могу поверить, что Apple не поставляла красивые UIB-кнопки в пользовательском интерфейсе, кажется, что такая фундаментальная вещь нужна?

В любом случае, спасибо за помощь mis amigos.

спасибо заответы ... Я пробовал исправление, но оно все еще не срабатывает

У меня теперь есть

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

затем

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

и

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

Обратите внимание, что метод находится в том же классе, что и UISegmentedControl.Может быть, я должен просто попробовать использовать API кнопки Glass, который был предложен, но мой босс ненавидит меня за использование сторонних библиотек, если есть способ избежать этого!

Ответы [ 3 ]

8 голосов
/ 23 августа 2011

Селектор неверен.Должно быть, action:@selector(changeFilter:), и изменить событие на forControlEvents:UIControlEventValueChanged, так как UISegmentedControl не отправляет никаких действий для UIControlEventTouchUpInside события.

5 голосов
/ 23 августа 2011

.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];
1 голос
/ 23 августа 2011

Действие автоматически отправит отправителя, поэтому просто попробуйте @selector (changeFilter:).

Что касается вашего второго вопроса, ios5 поможет вам в этом ... но я не могу много сказать об этомеще.На данный момент вы можете использовать некоторые классы uibutton, которые люди создали, чтобы легко создавать красивые кнопки.Вот один из них:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...