2010-11-19 6 views
2

У меня естьПочему не работает self.navigationController pushViewController?

UIViewController-> UINavigationBar + UITableView

Просто немного больше объяснение

Я сделал это через UIBuilder ..

1: создал новый UIViewController с XIB-файлом
2: Использование UIBuiler я поставил UINavigationController
3: Тогда я поставил UITableView под navigationBar так он мне дал ..

A: UIViewController-> UINavigationBar + UITableView

Теперь я загружая данные в UITableView из Webservice, который работает нормально.

Я снова сделал XIB с Сэмом конфигурации, которая

B: UIViewController-> UINavigationBar + UITableView

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

SelectSiteViewController *siteViewController = [[SelectSiteViewController alloc] initWithNibName:@"SelectSiteViewController" bundle:nil]; 

[self.navigationController pushViewController:siteViewController animated:YES]; 

Когда я проверил UINavigationController *nav = self.navigation

nav - 0x0, то есть я принимаю NIL.

Может кто-нибудь сказать мне, что случилось здесь .. почему это ноль ... и как я могу заставить его работать ..

Большое спасибо .... Я бы очень признателен за любую помощь

ответ

3

В UIBuilder убедитесь, что UINavigationController ссылается на владельца файла.

+0

Когда вы опускаете UINavigationBar из библиотеки UIBuilder ли это UINavigationController? Это UINavigationBar. – ujwaltrivedi

+0

Его просто бар, который появляется в представлении. Вам нужно либо перетащить UINavigationController в UIBuilder, либо подключить его к контроллеру навигации владельца файла. Или вы можете создать в коде. – jamihash

+0

Эй я могу отправить вам код .... Я пытался, но не мог понять ... Я бы очень признателен за любую помощь ... Спасибо, человек – ujwaltrivedi

1

Итак, вы добавляете табличное представление в контроллер навигации? Это так:

tableView = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain]; 

navigationController = [[UINavigationController alloc] init]; 

[navigationController pushViewController:tableView animated:NO]; 

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

self.navigationController pushViewController: newViewController animated:YES]; 

внутри метода didSelectRowAtIndex.

ПРИМЕЧАНИЕ: его UITableViewController * tableView и UINavigationController * navigationController путем объявления. Итак, код для вашей таблицы.

+0

No no ... Я создал новый файл, который является UIViewController с выбранной опцией XIB. Для экс: @interface ClasssName: UIViewController <некоторые делегаты> { } Так это Подкласс UIViewController Теперь я открыл файл XIb и падение UINavigationBar Тогда я падение UITableView на файл XIb, который UIViewController Помогает ли это? – ujwaltrivedi

2

Got it.

Я немного изменил Архитектуру.

Я создал новый класс UIViewController со своим xib. И закодирован новый UINavigationController.

- (void)viewDidLoad { 
[super viewDidLoad]; 
    UINavigationController *navigationController 
navigationController = [[UINavigationController alloc] init]; 
[self.view addSubview:navigationController.view]; 


switch (whichViewController) { 
    case 1: 
     viewController = [[xxxx alloc] init];   
     break; 
    case 2: 
     viewController = [[xxx1 alloc] init];   
     break; 
    default: 
     break; 
} 

[navigationController pushViewController:viewController animated:NO]; 
[viewController release]; 

}

И толкая вид в Заявлении коммутатора ....

Я надеюсь, что это имеет смысл ......

Благодаря jamihash

0

почему UIViewController-> UINavigationBar + UITableView?

Я предлагаю вам еще один подход -> UITableViewController A -> Embedded с Навигационным контроллером, то после заселить Tableview вы можете передать данные в -> UITableViewController B по [[самой раскадровке] instantiateViewControllerWithIdentifier: @ "ControllerB"] ;

Затем, в раскадровке, отбросьте таблицуView B и в Identity-> storyboard Id введите некоторый идентификатор.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSString *sUrl= @"<#string#>"; 
if (indexPath.row == 0) sUrl= @"http://www.apple.com/"; 
if (indexPath.row == 1) sUrl= @"http://www.google.com/"; 
if (indexPath.row == 2) sUrl= @"http://www.times.uk/"; 

NSMutableArray *selectedObject = [arrayOpenMale objectAtIndex:0]; 
NSLog(@"%@ is the selected object.",selectedObject); 

SeriesAdetailVC *dvc = [[self storyboard]instantiateViewControllerWithIdentifier:@"DetailView"]; 
dvc.strings7 = [NSURL URLWithString:sUrl]; 

[self.navigationController pushViewController:dvc animated:YES]; 

} 

надежда помощь

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