#iphone #uinavigationcontroller #indexing #switch-statement #uisegmentedcontrol
#iPhone #uinavigationcontroller #индексирование #оператор переключения #uisegmentedcontrol
Вопрос:
Я использую приложение 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;
}
}
Я надеюсь, что мы найдем решение
Большое спасибо
Ответ №1:
Возможное объяснение этой проблемы заключается в том, что self.segmentedControl равен нулю. Является ли self.segmentedControl IBOutlet? Или создан в коде? Проверьте, является ли self.segmentedControl == нулевым.
Комментарии:
1. Спасибо за вашу помощь. В моем случае NSLog (@»self.segmentedControl == %d», self.segmentedControl); возвращает мне 0. segmentedcontrol — это выход (я обновил свой первоначальный пост, чтобы показать заголовок ^^)
2. 0 равно нулю. Проблема в том, что self.segmentedControl равен нулю. Вы назначили IBOutlet в Interface Builder?
3. какие элементы я должен связать??? BarSegmentedControl с чем? извините… Я не установил связь с выходом!
4. Я подключил выход из GraphNavController к BarSegmented, и он запущен… ошибка новичка… ОГРОМНОЕ СПАСИБО!!!
5. я взял unsigned short и сохраняю в нем измененный индекс сегмента по мере его изменения. 😉 проблема решена.
Ответ №2:
У меня была та же проблема, и я боролся с ошибкой nill UISegmentedControl.
И я НАШЕЛ ОТВЕТ.
Иногда у вас возникает та же проблема, но у вас все соединения в XIB.
ПРОБЛЕМА:У вас в self.segmentedControl ничего нет. В большинстве ситуаций, когда у вас все подключено правильно в XIB, это также не сработает.
ПРИЧИНА: Из-за различий в изучении Objective-C мы используем разные стили написания кода.
Решение: Например, мы пишем в интерфейсе UISegmentedControl *control; Когда вы @synthesize, как бы вы это сделали? Если вы напишете @synthesize control=_control; при такой записи у вас всегда будет nill NSLog(@»%i»,control.selectedSegmentIndex).
Итак, у нас ошибка в @synthesize или в коде.
Решение
Для тех, кто пишет @synthesize control; используйте control.selectedSegmentIndex
Для тех, кто пишет @synthesize control=_control; используйте _control.selectedSegmentIndex
И все будет работать правильно.