сегментированный контроль всегда возвращает 0 - PullRequest
3 голосов
/ 28 апреля 2011

Я использую приложение TabBar с элементом навигации, который включает UISegmentedControl.

Я подключил метод, когда перехватывается событие «значение изменено».

метод всегда ловит 0 как SegmentIndex ...

Вот мой заголовочный файл:

#import <UIKit/UIKit.h>


@interface GraphNavController : UINavigationController {

    IBOutlet UIImage *image;
    CGPoint gestureStartPoint;
    UISegmentedControl *segmentedControl;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

-(IBAction) segmentedControlIndexChanged;

-(void)journalier;
-(void)mensuel;
-(void)annuel;


@property (nonatomic, retain) IBOutlet UIImage *image;
@property (nonatomic, retain) IBOutlet UISegmentedControl *segmentedControl;

@end

Метод здесь:

-(IBAction) segmentedControlIndexChanged{

    switch (self.segmentedControl.selectedSegmentIndex) {
        case 0:
            NSLog(@"1");
            break;
        case 1:
            NSLog(@"2");
            break;
        case 2:
            NSLog(@"3");
            break;
        default:
            break;
    }

}

Надеюсь, мы найдем решение

Большое спасибо

Ответы [ 2 ]

5 голосов
/ 28 апреля 2011

Возможное объяснение этой проблемы: self.segmentedControl равно нулю.Является ли self.segmentedControl IBOutlet?Или создан в коде?Проверьте, если self.segmentedControl == ноль.

0 голосов
/ 12 августа 2013

У меня была такая же проблема и я боролся с ошибкой nill UISegmentedControl.

И Я НАШЕЛ ОТВЕТ.

Иногда у вас возникает та же проблема, но у вас есть все соединения в XIB.

ПРОБЛЕМА: У вас есть ноль в self.segmentedControl. В большинстве ситуаций, когда у вас все правильно подключено в XIB, оно также не будет работать.

ПРИЧИНА: Из-за различий в изучении Objective-C мы используем разные стили написания кода.

Решение : Например, мы пишем в интерфейсе UISegmentedControl * control; Когда вы @ Synthesize, как бы вы это сделали? Если вы напишите @ synthesize control = _control; , у вас всегда будет ноль, когда вы пишете так NSLog (@ "% i", control.selectedSegmentIndex) .

Итак, мы имеем ошибку в @ synthesize или в коде.

Решение

Для тех, кто пишет @synthesize control; использовать control.selectedSegmentIndex

Для тех, кто пишет @synthesize control = _control; использовать _control.selectedSegmentIndex

И все будет работать правильно.

...