2013-04-15 2 views
0

Это статическая навигационная панель, как я установил в моем проекте, но хочу сделать в динамично, здесь два типа кода ...создать Панель навигации dynamatically в ИОС

viewsArray = [[NSArray alloc] init]; 
    AfterloginViewController *toolsnavigation = [[AfterloginViewController alloc] init]; 
    toolsnavigation.tabBarItem.image = [UIImage imageNamed:@"cool.png"]; 
    [toolsnavigation setTitle:@"Tools"]; 
    UINavigationController *nav0 = [[UINavigationController alloc] initWithRootViewController:toolsnavigation]; 

MapViewController *myridenavigation = [[MapViewController alloc] init]; 
    myridenavigation.tabBarItem.image = [UIImage imageNamed:@"cool.png"]; 
    [myridenavigation setTitle:@"Login"]; 
    UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:myridenavigation]; 

viewsArray = [NSArray arrayWithObjects:nav0,nav1,nav2,nav3,nav4,nav5,nav6,nav7,nav8, nil]; 

    tabbarController = [[UITabBarController alloc] init]; 
    [tabbarController setViewControllers:viewsArray]; 
    self.window.rootViewController = tabbarController; 

Теперь я получаю данные из URL-адреса и хотите назначить его как элемент динамической навигации. Но теперь я голосую, любая идея, как это сделать.

NSString *loginstring = [NSString stringWithFormat:@"%@nvgationarray.php",mydomainurl]; 
    NSMutableData *dataURL = [NSData dataWithContentsOfURL: [ NSURL URLWithString: loginstring]]; 
    NSDictionary *allData = [NSJSONSerialization JSONObjectWithData:dataURL options:0 error:nil]; 

    int i = 0; 
    for(NSDictionary *stat in allData) 
    { 
     NSString *ssprst = [stat objectForKey:@"tab_type"]; 
     NSString *ssprst1 = [stat objectForKey:@"tab_name"]; 
     NSString *ssprst2 = [stat objectForKey:@"tab_id"]; 
     NSString *ssprst3 = [stat objectForKey:@"icon"]; 
     NSLog(@"all data ===== :::: %@ %@ %@ %@",ssprst,ssprst1,ssprst2,ssprst3); 
     NSLog(@"++++++++++++++++++++++++++++++++++++++++++++++"); 

     AbcViewController *myridenavigation = [[AbcViewController alloc] init]; 
     myridenavigation.tabBarItem.image = [UIImage imageNamed:@"cool.png"]; 
     [myridenavigation setTitle:@"Login"]; 
     UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:myridenavigation]; 
     i++; 
    } 
+0

вы хотите назначить данные синхронно (ждать, пока данные не будут получать затем создать Панель навигации)? или асинхронно (нет необходимости ждать, пока данные не получат, сделайте еще, когда данные получат создание навигационной панели) –

+0

Данные поступают должным образом, и теперь мне нужно назначить контроллер навигации .. – Shyantanu

+0

, так что это синхронно? Вы хотите создать множество uiviewcontroller или uinavigationcontroller? Мне кажется странным, что я создал много uinavigationcontroller. Вы хотите сохранить память uinavigationcontroller или нет? –

ответ

0

если вы хотите сохранить память UINavigationController. Я предлагаю вам провести его в NSMutableArray.

В заголовочном файле

@property(nonatomic, strong) NSMutableArray* arrayNavigationCont; 

В файле реализации

@synthesize arrayNavigationCont = _arrayNavigationCont; 

не забудьте также инициализировать массив в где соответствующий как viewDidLoad

self.arrayNavigationCont = [[NSMutableArray alloc] init]; 

В вашем методе ...

for(NSDictionary *stat in allData) 
{ 
     ... 
     AbcViewController *myridenavigation = [[AbcViewController alloc] init]; 
     myridenavigation.tabBarItem.image = [UIImage imageNamed:@"cool.png"]; 
     [myridenavigation setTitle:@"Login"]; 
     UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:myridenavigation]; 
     [self.arrayNavigationCont addObject:nav1] 
     i++; 

} 

Позже вы можете получить доступ к вам navigationConts где-то снова

for(int i = 0; i < [self.arrayNavigationCont count]; i++) 
{ 
    UINavigationController *nav1 = [self.arrayNavigationCont objectAtIndex:i]; 
    //do sth with nav1 to your like 
} 
Смежные вопросы