Почему не работает self.navigationController pushViewController? - PullRequest
2 голосов
/ 19 ноября 2010

у меня есть

UIViewController-> UINavigationBar + UITableView

Еще немного объяснений

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

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

A: UIViewController-> UINavigationBar + UITableView

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

Я снова сделал xib с конфигом sam, который

B: UIViewController-> UINavigationBar + UITableView

Так что теперь, когда я пытаюсь выдвинуть представление B на представление A, используя приведенный ниже код ... оно вообще не будет работать ...

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

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

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

nav = 0x0, то есть я предполагаю NIL.

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

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

Ответы [ 4 ]

3 голосов
/ 19 ноября 2010

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

2 голосов
/ 21 ноября 2010

Понял.

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

Я создал новый класс 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];

}

И продвижение представления в операторе Switch ....

Надеюсь, это имеет смысл ......

Спасибо, Джамихаш

1 голос
/ 19 ноября 2010

То есть вы добавляете просмотр таблицы в контроллер навигации, верно?Вот как:

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

navigationController = [[UINavigationController alloc] init];

[navigationController pushViewController:tableView animated:NO];

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

self.navigationController pushViewController: newViewController animated:YES]; 

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

ПРИМЕЧАНИЕ: его UITableViewController * tableView и UINavigationController * navigationController * по объявлениюТак что используйте соответствующий код для вашей таблицы.

0 голосов
/ 18 декабря 2012

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

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

, затем в раскадровке перетащите tableView 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];

}

надеюсь, что помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...