#ios #uikit #uigesturerecognizer #nib #uiswipegesturerecognizer
#iOS #uikit #uigesturerecognizer #наконечник #uiswipegesturerecognizer
Вопрос:
Я просто хочу иметь возможность перейти к новому наконечнику, но я застреваю. Мой код строится правильно, без ошибок или предупреждений, но ничего не происходит.
Вот мой код
- (IBAction) handleSwipeGesture:(UIGestureRecognizer *) sener {
NSLog(@"swipe left");
if(UISwipeGestureRecognizerDirectionLeft) {
SecondDetailViewController *tempController = [[SecondDetailViewController alloc]
initWithNibName:@"SecondDetailView"
bundle:nil];
newController = [tempController retain];
[tempController release];
}
}
Система видит, что я провожу пальцем (он регистрируется), но он не переходит к новой строке.
Я на самом деле не женат на своем коде, поэтому, если мне нужно полностью переписать это, я в порядке.
Комментарии:
1. Используете ли вы контроллер навигации для отображения контроллеров просмотра?
Ответ №1:
Предполагая, что вы обрабатываете жест салфетки внутри контроллера представления (и используете контроллер навигации), вы должны сделать что-то вроде этого:
- (IBAction)handleSwipeGesture:(UISwipeGestureRecognizer *)sender {
if(sender.direction == UISwipeGestureRecognizerDirectionLeft) {
NSLog(@"swipe left");
SecondDetailViewController *tempController = [[SecondDetailViewController alloc]
initWithNibName:@"SecondDetailView" bundle:nil];
[self.navigationController pushViewController:tempController animated:YES];
[tempController release];
}
}
Эта строка tempController
отображается поверх контроллера навигации:
[self.navigationController pushViewController:tempController animated:YES];
если вы хотите представить tempController
модально, вы должны вызвать это вместо:
[self presentModalViewController:tempController animated:YES];
Комментарии:
1. На самом деле это было отключено от splitViewController. Отличается ли код для SplitView от NavigationController? Хотя код Ayoy строится технически правильно (без ошибок), я даже ничего не получаю с журналом сейчас!
2. о, и если это имеет значение, для этого используется проект Apple «MultipleDetailView»
3. Вы ничего не видите в журнале, потому что я переместил вывод отладки внутри
if
предложения, проверяющего направление прокрутки, и вы, вероятно, не проводите пальцем влево 🙂 Split view controller — это просто контейнер для двух контроллеров просмотра, и он не предоставляет никакого API для переходов между видами. Вы даже не можете ссылаться на контроллер разделенного представления из его дочерних контроллеров представления (чтобы поменять один из них на новый при пролистывании). Однако вы можете поместить контроллер навигации в качестве одного из дочерних контроллеров split view и использовать его для управления потоком просмотров.4. я предполагаю, что вы обрабатываете жест салфетки внутри дочернего контроллера представления вашего контроллера разделенного представления. Это правильно?
5. По сути, я делаю журнал, и splitview был моим первым черновиком, и я просто ленился и пытался переделать это вместо того, чтобы создавать что-то новое. Если я проведу пальцем, мне не обязательно нужно разделение. Итак, я должен просто начать с нуля и начать с навигационного контроллера?
Ответ №2:
Вы ничего не делаете с объектом newController после его создания. Вам нужно либо поместить его на свой навигационный контроллер, представить его модально, либо захватить представление и вывести его на экран.