2016-02-11 2 views
0

Я делаю проект, в котором у них нет раскадровки.Как вывести xib из контроллера просмотра

Я не очень осведомлен о xib.

У меня возникла проблема с нажатием ViewControllers от Xib.

В раскадровку я использовал, чтобы сделать с помощью:

[self.navigationController pushViewController......]; 

Но вот что я должен сделать:

Я пытаюсь с этим кодом:

HomeScreenVC *homeScreen = [[HomeScreenVC alloc]initWithNibName:@"HomeScreenVC" bundle:nil]; 
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:homeScreen]; 
[navController pushViewController:homeScreen animated:YES]; 

Но Сбои и код, который работает:

UINavigationController *myNavigation = [[UINavigationController alloc] initWithRootViewController:self.signInVC]; 
[controller presentViewController:myNavigation animated:YES completion:nil]; 

Я не могу получить правильный путь. Пожалуйста помогите.

+0

что говорит об аварии? –

+0

'Нажатие одного и того же экземпляра контроллера просмотра более одного раза не поддерживается ()' @ Mr.T – Dalvik

+0

говорится, что вы пытаетесь нажать homeVC, где homeVC уже существует в стеке. Каков ваш текущий VC? –

ответ

0

Первая попытка установить ViewController с контроллером навигации

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
//The first view controller 
     self.firstController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
//The navigation controller 
     UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:self.firstController]; 
     [self.window addSubview:navController.view]; 
     self.window.rootViewController = navController; 
     [self.window makeKeyAndVisible]; 
     return YES; 
} 

позволяет сказать ViewController ваш класс, нажмите на ваш новый ViewController, попробуйте следующее:

@implementation ViewController 

- (void)goToHomeScreen{ 
    HomeScreenVC *homeScreen = [[HomeScreenVC alloc]initWithNibName:@"HomeScreenVC" bundle:nil]; 
    [self.navigationController pushViewController:homeScreen animated:YES]; 
} 
+0

Это показывает мне черный экран – Dalvik

+0

. Не используйте ту же линию, что и в ответе. Замените ViewCOntroller на ваш WelcomeSCreen VC @RahulMishra –

0

Ваш код блока 1 происходит сбой из-за :

HomeScreenVC *homeScreen = [[HomeScreenVC alloc]initWithNibName:@"HomeScreenVC" bundle:nil]; 
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:homeScreen]; 
[navController pushViewController:homeScreen animated:YES]; 

У вас есть дополнительная информация отредактировал homeScreen для контроллера навигации и снова попытался нажать тот же контроллер.

Ваше мнение корневой контроллер (welcomeVC) не имеет навигационный контроллер, поэтому он не может нажать любой контроллер представления (он может присутствовать только, следовательно, второй код блокировал работал для вас). Вы должны представить контроллер навигации из приветственного VC, который имеет главный экран в качестве корневого контроллера.

Или

Вам нужно добавить навигационный контроллер как вид корневой контроллер (который имеет WelcomeVC навигации стека) в делегат своего приложения, а затем дайте ему толкать homeVC в welcomeVC просто вызовом:

[self.navigationController pushview.... 

AppDelegate: Установите навигационный контроллер как вид корневого контроллера здесь:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

     WelcomeVC *mainViewController = [[WelcomeVC alloc]initWithNibName:@"WelcomeVC" bundle:nil]; 
     UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController: mainViewController]; 
     self.window.rootViewController = navController; 
     [self.window makeKeyAndVisible]; 
     return YES; 
} 

, а затем нажмите на ваш пожелал прод ролик:

HomeScreenVC *homeScreen = [[HomeScreenVC alloc]initWithNibName:@"HomeScreenVC" bundle:nil]; 
[self.navigationController pushViewController:homeScreen animated:YES]; 
+0

2016-02-12 00: 26: 09.151 MyApp [39931: 821657] Предупреждение: попытайтесь представить в , чей вид не находится в иерархии окон ! – Dalvik

+0

NOw Я получаю этот журнал сообщений и получил черный экран – Dalvik

+0

, где вы называете [self.navigationController pushViewController: homeScreen animated: YES]; ? –

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