2011-08-23 16 views
5

Jestem pewien, że jest to łatwe dla kogoś tam. Mam UISegmentedControl których używam jako przycisk (tak aby nie trzeba używać domyślnego przycisku paskudny) i mam problemy z uzyskiwanie cel do pracy .... kod następującoUISegmentedControl i dodawanie celów

- (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]; 



} 

a następnie

-(void)changeFilter:(id)sender{ 

} 

z jakiegoś powodu kliknięcie UISegmentedControl nie wywołuje metody docelowej.

Jako dodatek, czy istnieje prostszy sposób tworzenia ładnie wyglądających UButtonów? Nie mam dostępu do Photoshopa w pracy (chociaż mam zainstalowanego gima), więc sposób, który nie wymaga tworzenia obrazu, byłby dobry. Nie mogę uwierzyć, że jabłko nie dostarczyło ładnie wyglądających UIButtonów w interfejsie, wydaje się, że taka podstawowa rzecz jest potrzebna?

W każdym razie dziękuję za pomoc mis amigos.

dzięki za odpowiedzi ... Próbowałem poprawkę ale wciąż nie ognia

Mam teraz

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

następnie

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

i

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

Należy pamiętać, że metoda jest w tej samej klasie co UISegmentedControl. Może powinienem po prostu spróbować użyć sugerowanego interfejsu API Glass, ale mój szef nienawidzi mnie za pomocą bibliotek stron trzecich, jeśli istnieje sposób na uniknięcie tego!

Odpowiedz

8

Selektor jest nieprawidłowy. Powinno być, action:@selector(changeFilter:), i zmienić zdarzenie na forControlEvents:UIControlEventValueChanged, jako UISegmentedControl nie wysyła żadnych działań dla zdarzenia UIControlEventTouchUpInside.

+0

Zrobiłem to i to nadal nie wypalanie – shaw2thefloor

+0

Zmień zdarzenie zbyt. Sprawdź moją zredagowaną odpowiedź. – EmptyStack

+0

Ach, że bilet ... jest dla wszystkich odpowiedzi. – shaw2thefloor

5

plik .h u zapomniał umieścić ten

 -(void)changeFilter:(id)sender; 

następnie

change this 

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

To 

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

Akcja automatycznie wyśle ​​nadawcę więc po prostu spróbować @selector (changeFilter :).

Co do twojego drugiego pytania, ios5 pomoże ci tam ... ale nie mogę powiedzieć jeszcze wiele na ten temat. Na razie możesz użyć klas uibuttonów, które ludzie zrobili, by łatwo zrobić dobrze wyglądające przyciski. Oto jeden:

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

Powiązane problemy