Я не могу использовать segmentedControl, когда пытаюсь вспомнить выбор сегментированного элемента управления.

у меня проблема у меня есть сегментированный элемент управления и 2 кнопки.

Эти 2 кнопки ведут к контроллерам табличного представления, где пользователь выбирает входные данные.

но когда пользователь выбирает сегмент сегментированного элемента управления и переходит к контроллеру tableview, выбор возвращается к значениям по умолчанию.

- (IBAction)selectionOfTransportation:(id)sender {

     ran =((UISegmentedControl *)sender).selectedSegmentIndex;
    NSLog(@"%d",ran);

    switch (ran) {
        case 0://vapur
            NSLog(@"0 ");
             path = [[NSBundle mainBundle] pathForResource:@"vapurWeekdays" ofType:@"plist"];
            arrayOfPlist = [[NSArray alloc] initWithContentsOfFile:path];

            ran=0;
            break;
        case 1:
             NSLog(@"1");
            path = [[NSBundle mainBundle] pathForResource:@"denizotobus" ofType:@"plist"];
            arrayOfPlist = [[NSArray alloc] initWithContentsOfFile:path];
            ran=1;

            break;
        case 2:

            break;
    }

    NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];



    [settings setInteger:ran forKey:@"MySelectedValueKey"];

}

это мой код.

Я сохранил значение в NSUserDefaults и попытался изменить выбор, но нигде не могу использовать segment.selectedSegmentIndex!

Сначала я определил сегментированное управление как действие, но я даже пытался определить его в файле .h.

как я могу его использовать?

Или еще лучше, как я могу запомнить выбор сегментированного управления


person user3790582    schedule 02.07.2014    source источник
comment
Это должно происходить по умолчанию... вам не нужно указывать, какую вкладку выделить. Вы вызвали этот метод selectionOfTransportation для события UIControlEventValueChanged для вашего UISegmentedControl?   -  person Zhang    schedule 02.07.2014
comment
нет, никогда не слышал о событии UIControlEventValueChanged. Я не понимаю, вы говорите, что сегментированный элемент управления запоминает выбор по умолчанию, даже если элемент управления представлением изменяется? @Чжан   -  person user3790582    schedule 02.07.2014
comment
Если вы не имеете в виду, что ваш сегментированный элемент управления находится внутри UIViewController, который вы помещаете в стек навигации, в противном случае ваш сегментированный элемент управления не должен изменять свой выбор. Вы имеете в виду на своей главной странице, что у вас есть UIViewController, который имеет сегментированный элемент управления и 2 кнопки, вы меняете выбранную вкладку сегмента, нажимаете одну из кнопок, чтобы нажать новый контроллер представления, измените какое-то значение, нажмите кнопку «Назад» и ваш сегментированный элемент управления сбрасывает ранее выбранную вкладку?   -  person Zhang    schedule 02.07.2014


Ответы (2)


пожалуйста, попробуйте этот пример.

первый бросок и перетаскивание сегмента в xib.

в файле .h

IBOutlet UISegmentedControl *mySegmentedControl;

в .м файле

- (void)viewDidLoad
{
    [super viewDidLoad];

   [mySegmentedControl setSelectedSegmentIndex:0];
[mySegmentedControl addTarget:self action:@selector(segmentSwitch:)
                 forControlEvents:UIControlEventValueChanged];
}


- (IBAction)segmentSwitch:(id)sender
{
    int ran=mySegmentedControl.selectedSegmentIndex;

       **or**

    int ran;
    if(mySegmentedControl.selectedSegmentIndex == 0)
    {
      ran=0;
    }
    else if(mySegmentedControl.selectedSegmentIndex == 1)
    {
      ran=1;  
    }
    else if(mySegmentedControl.selectedSegmentIndex == 2)
    {
        ran=2;
    }
    else if(mySegmentedControl.selectedSegmentIndex == 3)
    {
        ran=3;
    }

}
person Rohit    schedule 02.07.2014

вы забыли синхронизировать userdefault. если не синхронизировать значение не сотрется

NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
[settings setInteger:ran forKey:@"MySelectedValueKey"];

//Add This Line
[settings synchronize];

Это синхронизирует пользовательские значения по умолчанию, и вы можете использовать их в других контроллерах.

person Moinuddin Girach    schedule 02.07.2014