2016-02-23 2 views
-1

Я хочу сделать кнопку, когда я нажимаю эту кнопку, мое приложение переходит к первому экрану.
В моем приложении было много способов перейти на экран (PageViewController, Push Navigation, настоящий модальный, ...).
Есть ли способ принудительно переключиться на первый экран и выпустить все загруженные экраны?Как перейти на первый экран приложения?

+2

Посмотрите UNWIND перетекает. – dasblinkenlight

+0

Посмотрите на siba prasad Hotas ответ – user2277872

+0

@dasblinkenlight: Спасибо, я разрешил свои проблемы с развязкой segues. – ThuongNM

ответ

1

Вы можете перейти на первую страницу с помощью метода popToRootViewControllerAnimatedUINavigationController, если вы не указали корневой режим внутри приложения.

+0

Нелегкое poptorootview, мое приложение использовало много способов. Сначала использовал pageviewer, затем использовал режим просмотра, а затем использовал push navigation – ThuongNM

1

Вы можете использовать UNWIND перетекает, чтобы сделать это, или вы можете вернуться назад инстанцирования своего первого контроллера представления. (Не будет выглядеть pop, хотя.)

var firstVC: UIViewController? = self.storyboard?.instantiateViewControllerWithIdentifier("firstVC") as? UIViewController 

self.presentViewController(firstVC!, animated: true, completion: nil) 
2
UINavigationController* navController = self.navigationController; 
NSArray *viewControllers=[navController viewControllers]; 
UIViewController* controller = [viewControllers objectAtIndex:0]; 
[navController popToViewController:controller animated:YES]; 
1

Чтобы перейти к первому экрану, вам должен будет инициализировать первый контроллер представления приложения, установить его в качестве контроллера корневого контроллера контроллера навигации, а затем потушить его. Ниже приведен код для этого.

AppDelegate *appdelegate = ((AppDelegate*)[[UIApplication sharedApplication] delegate]) 

ViewController *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:NULL] instantiateViewControllerWithIdentifier:@"vc_id"]; 
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: vc]; 
     [appdelegate.window setRootViewController:nav]; 
     [self.navigationController popToRootViewControllerAnimated:YES]; 

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

1

Создайте функцию для загрузки первого экрана на Appdelegate и назовите его нажатием кнопки. В этом случае rootViewController будет присвоен другому объекту, который будет deallocate других объектов.

-(void)GotoFirstScreen:(UIViewController *)currentScreen { 
    [currentScreen.view removeFromSuperview]; 
    MYFirstViewController *splsh  = [[MYFirstViewController alloc]initWithNibName:@"MYFirstViewController" bundle:nil]; 
    UINavigationController *newVc = [[UINavigationController alloc]initWithRootViewController:splsh]; 
    newVc.navigationBarHidden = YES; 
    self.window.rootViewController = newVc; 
    [self.window makeKeyAndVisible]; 
} 

Теперь этот метод вызывается таким образом

-(IBAction)ButtonClicked:(id)sender{ 
    AppDelegate *appdelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; 
    [appdelegate GotoFirstScreen:self]; 
} 
1

Я думаю, в вашем случае, если вы хотите загрузить свой первый вид после выхода из приложения правильно ..?

Если это так, то вот решение для вас. Ниже будет загружено первое представление из любого места вашего приложения и будет выпущено почти все сцены и память. Однако, если вы используете некоторые файлы NSUserDefaults или Appdelegate для хранения данных, вам необходимо принудительно очистить эти объекты, чтобы выпустить их значения.

Это решение в Swift, но каждый может сделать то же самое и в объективе c.

Теперь, переход к решению -

Шаг 1. Гото ваш storyborad и перейдите к нужному ViewController который вы хотите загрузить в качестве первого взгляда.

Шаг 2. Отдайте идентификатор раскадровки этому диспетчеру просмотра.

Шаг 3. Используйте нижеследующий код для любого нажатия кнопки или что-то чувак для работы ..... и Voila !!!! ... Это сделано. Нотабене - Создайте объект класса appdelegate внутри текущего класса, из которого вы хотите загрузить страницу.

Кстати, я вставляю изображение о том, как передать идентификатор раскадровки в viewcontroller, который, я думаю, вам немного поможет.

enter image description here

Теперь часть кода -

 let appDelegateObjectForThisClass = UIApplication.sharedApplication().delegate as! AppDelegate //Creating Appdelegate Object. 

@IBAction func LogOutSection(sender: AnyObject) { //Action of logout button 
    self.appDelegateObjectForThisClass.window?.rootViewController = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("mainPage") //"Main" is the storyboard name here in my case, replace with yours. "mainPage" is your given storyboard id to that viewcontroller. 
    } 
Смежные вопросы