2015-03-22 4 views
-1

У меня есть TabBar основы приложения, где я добавить контроллеры в приложении, как это:магазин TabBar Вкладка порядок в основных данных

UIStoryboard *storyboard = self.storyboard; 
self.tabbar = [[UITabBarController alloc]init]; 

// FirstViewController 
SoccerViewController *fvc=[storyboard instantiateViewControllerWithIdentifier:@"SoccerViewController"]; 
fvc.navigationItem.title = @"Fodbold"; 
fvc.tabBarItem.image=[UIImage imageNamed:@"fodbold.png"]; 

//SecondViewController 
HaandballViewController *svc=[storyboard instantiateViewControllerWithIdentifier:@"HaandballViewController"]; 
[email protected]"Håndbold"; 
svc.tabBarItem.image=[UIImage imageNamed:@"handball.png"]; 

//ThirdViewController 
FootballViewController *tvc= [storyboard instantiateViewControllerWithIdentifier:@"FootBallViewController"]; 
[email protected]"Amr. Fodbold"; 
tvc.tabBarItem.image=[UIImage imageNamed:@"nfl.png"]; 

//ForthViewController 
BasketballViewController *fovc=[storyboard instantiateViewControllerWithIdentifier:@"BasketBallViewController"]; 
[email protected]"Basketball"; 
fovc.tabBarItem.image=[UIImage imageNamed:@"basketball.png"]; 

//FifthViewController 
HockeyViewController *ftvc=[storyboard instantiateViewControllerWithIdentifier:@"HockeyViewController"]; 
[email protected]"Ishockey"; 
ftvc.tabBarItem.image=[UIImage imageNamed:@"icehockey.png"]; 



[API sharedInstance].allViewCont = [NSMutableArray arrayWithObjects:fvc,svc,tvc,fovc,ftvc, nil]; 


self.tabbar.viewControllers= [API sharedInstance].allViewCont; 

[self.view addSubview:self.tabbar.view]; 

// NSLog(@"%@", [API sharedInstance].allViewCont); 

//[self performSelector:@selector(hideSports) withObject:nil afterDelay:1]; 

self.tabbar.delegate = self; 

Теперь спасительные работы и я закрыть приложение и открыть я получаю это:

"<HaandballViewController: 0x7fdd9a589bd0>", 
"<SoccerViewController: 0x7fdd9a58ac40>", 
"<FootballViewController: 0x7fdd9a593180>", 
"<BasketballViewController: 0x7fdd9a594350>", 
"<HockeyViewController: 0x7fdd9a58efe0>" 

, но я не могу установить отсортированные краны, как это:

- (void)setTabOrderIfSaved { 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSData *data = [defaults objectForKey:@"sortetTabs"]; 
NSMutableArray *savedOrder = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 
NSMutableArray *orderedTabs = [NSMutableArray arrayWithCapacity:6]; 
    NSLog(@"Test af gem array %@",savedOrder); 
if (savedOrder!=nil && [savedOrder count] > 0) { 
    for (int i = 0; i < [savedOrder count]; i++){ 
     for (UIViewController *aController in self.tabbar.viewControllers) { 
      if ([aController.title isEqualToString:[savedOrder objectAtIndex:i]]) { 
       [orderedTabs addObject:aController]; 
      } 
     } 
    } 
    for (UIViewController *aController in self.tabbar.viewControllers) { 
     int loaded=0; 
     for (UIViewController *bController in orderedTabs) { 
      if ([aController.title isEqualToString:bController.title]) { 
       loaded=1; 
       break; 
      } 
     } 
     if (loaded==0) { 
      [orderedTabs addObject:aController]; 
     } 
    } 

    self.tabbar.viewControllers = orderedTabs; 
} 

я fixet это .......

+0

Вы не должны добавлять точку зрения барного контроллера вкладки как subview, не делая контроллер панели вкладок контроллером детского представления - даже тогда я не уверен, что вы должны это делать. Контроллер панели вкладок, вероятно, должен быть контроллером корневого окна окна, или вы можете представить его модально с другого контроллера. – rdelmar

ответ

0

Основные данные, безусловно, переборщит, чтобы сохранить пользовательские предпочтения. Вы должны использовать NSUserDefaults. Просто сохраните массив строк, описывающих ваши контроллеры (вы можете использовать те прекрасные нечитаемые сокращения, которые вы придумали).

[[NSUserDefaults standardUserDefaults] setObject: 
    @[@"fvc", @"svc", @"tvc", @"fovc", @"ftvc"] forKey:@"TabsOrder"]; 

Таким образом, чтобы получить изменяемый массив из значений по умолчанию:

NSMutableArray *tabs = [NSMutableArray arrayWithArray: 
    [[NSUserDefaults standardUserDefaults] objectForKey:@"TabsOrder"]]; 

Чтобы сохранить его, как только редактирование закончило:

[[NSUserDefaults standardUserDefaults] setObject:tabs forKey:@"TabsOrder"]; 
+0

как я сказал, я храню их в массиве NaMutable и в виде табуляции в настройках пользователь может достичь и отбросить ячейку, чтобы сделать заказ, который они хотят, и я попытался добавить NSuserdefault, но не один из способов, с которыми я работал. и (до тех пор, как я знаю сокращения) – Skovie

+0

Вот как это делается. Я объясню, как вы можете использовать статический массив в настройках по умолчанию для заполнения вашего изменяемого массива. [_It помогло бы, если бы вы могли попробовать написать понятный английский язык.] – Mundi

Смежные вопросы