Próbowałem się nauczyć UIPageViewController
s i uderzyłem w problem, którego nie mogłem rozwiązać. To co próbowałem zrobić:ViewControllers with TextViews w UIPageViewController
- Kroki:
- po prostu stworzony 2 Widok kontrolerów i kontroler widok w stronę storyboard.
- Następnie dodałem kod do Właściciela pliku
PageViewController
do zachowując się jakdataSource
idelegate
dla siebie. - Kiedy biegałem, wszystko działało dobrze.
- Dodałem kilka przycisków i pól tekstowych do drugiego kontrolera widoku.
- Biegłem, działał dobrze.
- Teraz dodałem widok tekstowy do drugiego kontrolera widoku i uruchomiłem. Kiedy próbowałem coś napisać w widoku tekstowym, kontrolka strony zaatakowała i przeniesiona do pierwszego kontrolera widoku.
Czy ktokolwiek to przeżył?
@interface AMPageViewController : UIPageViewController <UIPageViewControllerDataSource, UIPageViewControllerDelegate>
@end
Realizacja:
#import "AMPageViewController.h"
@interface AMPageViewController()
{
UIViewController *mainController;
UIViewController* socController;
}
@end
@implementation AMPageViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle: nil];
mainController = (UIViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"First"];
socController = (UIViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"Second"];
[self setViewControllers:@[mainController]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
self.dataSource = self;
self.delegate = self;
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
if (viewController == socController)
return mainController;
else return nil;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
if (viewController == mainController)
return socController;
else return nil;
}
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
{
return 2;
}
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
return 0;
}
@end
If you want to download and try the project
widoku strony kontrolerów pozwala obrócić stronę albo przesuwając lub stukając w pobliżu jednej krawędzi. Zgaduję, że trafiasz w ten rozpoznawalny gest po lewej stronie. – rdelmar
Nie sądzę. Proszę spojrzeć na załączony projekt https://dl.dropbox.com/u/62559842/PageViewcontrollerTest.zip – Bavan
Tak, rozumiem co masz na myśli. Ma to coś wspólnego z przejściem przewijania. Jeśli zmienisz go na zwijanie, zachowuje się normalnie. – rdelmar