2014-11-25 3 views
0

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

После кода для салфетки ручки:

-(void)handleSwipeLeft:(UISwipeGestureRecognizer *)gestureRecognizer{ 
    CGPoint location = [gestureRecognizer locationInView:tableView]; 
    NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:location]; 
    if(indexPath){ 
     userCell *cell = [tableView cellForRowAtIndexPath:indexPath]; //userCell inherits from UITableViewCell so why complain? 
     StatisticsViewController *statisticsView = [StatisticsViewController new]; 
     [self.view removeFromSuperview]; 
     [self.view addSubview:statisticsView.view]; 
     //[self.view insertSubview:statisticsView.view atIndex:0]; 
    } 
} ` 

я ранее использовал insertSubview: atIndex: 0 перед тем, как я закомментировать. Моя проблема заключается в том, что новое представление, которое я пытаюсь добавить, не добавляется. RemoveFromSuperview работает в том смысле, что я получаю черный экран (следовательно, удаляя представление). Но я не понимаю, почему я не могу добавить другое представление (statisticsView, из которого я создаю экземпляр, я использую раскадровку и имею статистический контролер с некоторыми ярлыками и цветами, чтобы просто проверить), я просто получаю черный экран после удаления Посмотреть. Btw, я работаю от моего rootviewcontroller с именем FrontPageViewController. Я не знаю, было бы «правильно» иметь чистый контроллер (root), который загружается в frontpageviewcontroller, а затем отключать его, если мне нужно загрузить другое представление. (Но я не понимаю, почему мой нынешний подход не сработает). Заранее спасибо

+0

Я не уверен, что вы прочитали мое сообщение, прежде чем пылать меня. Вы даже прочитали то, что я написал о моем подходе; думаю нет? Плохой код или нет, ваш код может просто описать то, что я спросил об этом подходе, но не уверен ... потому что ваше объяснение является своеобразным ... bad – awp2004

+0

EDIT: угадайте, что вы удалили свой следующий комментарий после прочтения. Так будет я – awp2004

+0

И единственная причина, по которой я попытался удалить свое _current_-представление из супервизора, состоял в том, что ни [self.view addSubview: statisticsView.view]; ИЛИ //[self.view insertSubview: statisticsView.view atIndex: 0]; работает, чтобы показать представление, которое я хочу видеть пользователю. плюс я впервые попробовал [super.view addSubview ...........], а затем попытался self.view в отчаянии. Я думаю, ^^ – awp2004

ответ

1

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

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

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

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

[self performSegueWithIdentifier: @"MySegue" sender: self]; 

Если только намерение состоит в том, чтобы заменить вид в том же контроллере вы РЕКОМЕНДУЕМЫМ создавать его (просто представление, а не контроллер) программно, а не путем добавления вида с одного контроллера на другой.

Если вам нужна помощь с перетекает я рекомендую вам начать с чтения «Добавить SEGUE для навигации вперед» от https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/SecondTutorial.html

Чтобы вручную выполнить SEGUE вам нужно будет выбрать идентификатор к Segue вы создали ,

+0

Я намерен переключаться между диспетчерами представлений, поэтому представляя пользователю разные представления, которые хранятся у разных контроллеров представления (как это сделать это по коду?); может быть, мое объяснение было немного плохой, прошу вас об этом :) Причина моего подхода к контроллеру представления, который управляет переключением между другим контроллером представления, заключается в том, что книга, которую я читал, сделала это в какой-то момент. Любые моменты, которые вы могли бы прояснить, будут очень благодарны, поскольку я чувствую, что это довольно простой способ структурирования приложения. – awp2004

+0

Если вы собираетесь переключаться между контроллерами, вы должны использовать segues. Вы можете взглянуть на https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/SecondTutorial.html – Guga

+0

Я буду изучать это прямо сейчас. Я смотрел на этот вызов функции [self presentViewController: статистика: анимация: YES завершение: ноль]; (но это приводит к черному экрану, но без удаления вида). Правильно ли я структурирую свое приложение с разными контроллерами представлений, которые я переключаю между ними, чтобы представить пользователю мои разные «экраны/страницы». – awp2004

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