Hallo.
Ich habe eine App erstellt, die über einen PageViewController verfügt und ein label anzeigt, dessen Daten aus einer webseite mithilfe von Hpple ausgelesen werden.
Zum besseren Verständnis hier der Message-File des View Controllers:
Alles anzeigen
(label ist das IBOutlet aus dem XIB Dokument)
und hier der Message File des PageViewControllers:
Alles anzeigen
Wenn der Inhalt von pageStrings
"12.11.2012",
"29.11.2012",
"05.12.2012",
"10.12.2012"
ist, so funktioniert nur das erste umblättern von 12.11.2012 zu 29.11.2012 und sonst wird nur noch 29.11.2012 angezeigt und das unendlich oft.
Vergebe ich aber pageStrings mit einer eigenen For Schleife, wie z.B.:
dann funktioniert das ganze und es gibt nicht unendlich, sondern genau 10 Seiten.
Wie kann ich die Seiten mit den Daten aus der Webseite füllen?
Danke schon mal im Voraus!
Ich habe eine App erstellt, die über einen PageViewController verfügt und ein label anzeigt, dessen Daten aus einer webseite mithilfe von Hpple ausgelesen werden.
Zum besseren Verständnis hier der Message-File des View Controllers:
Quellcode
- #import "contentViewController.h"
- @interface contentViewController ()
- @end
- @implementation contentViewController
- @synthesize label,dataObject;
- - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
- {
- self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
- if (self) {
- // Custom initialization
- }
- return self;
- }
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // Do any additional setup after loading the view from its nib.
- }
- -(void) viewWillAppear:(BOOL)animated{
- [super viewWillAppear:animated];
- label.text=dataObject;
- }
- - (void)didReceiveMemoryWarning
- {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- @end
(label ist das IBOutlet aus dem XIB Dokument)
und hier der Message File des PageViewControllers:
Quellcode
- #import "ViewController.h"
- @implementation ViewController
- @synthesize pageController, pageContent,dataDatum;
- //init
- - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
- {
- self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
- if (self) {
- // Custom initialization
- }
- return self;
- }
- //pageViewDataSource
- - (contentViewController *)viewControllerAtIndex:(NSUInteger)index
- {
- // Return the data view controller for the given index.
- if (([self.pageContent count] == 0) ||
- (index >= [self.pageContent count])) {
- return nil;
- }
- // Create a new view controller and pass suitable data.
- contentViewController *dataViewController =
- [[contentViewController alloc]
- initWithNibName:@"contentViewController"
- bundle:nil];
- dataViewController.dataObject =
- [self.pageContent objectAtIndex:index];
- return dataViewController;
- }
- - (NSUInteger)indexOfViewController:(contentViewController *)viewController
- {
- return [self.pageContent indexOfObject:viewController.dataObject];
- }
- - (UIViewController *)pageViewController:
- (UIPageViewController *)pageViewController viewControllerBeforeViewController:
- (UIViewController *)viewController
- {
- NSUInteger index = [self indexOfViewController:
- (contentViewController *)viewController];
- if ((index == 0) || (index == NSNotFound)) {
- return nil;
- }
- index--;
- return [self viewControllerAtIndex:index];
- }
- - (UIViewController *)pageViewController:
- (UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
- {
- NSUInteger index = [self indexOfViewController:
- (contentViewController *)viewController];
- if (index == NSNotFound) {
- return nil;
- }
- index++;
- if (index == [self.pageContent count]) {
- return nil;
- }
- return [self viewControllerAtIndex:index];
- }
- //custom method
- - (void) createContentPages
- {
- NSMutableArray *pageStrings = [[NSMutableArray alloc] init];
- NSData *result = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"beispielURL"]];
- //init for parsing
- TFHpple *xpath = [[TFHpple alloc] initWithHTMLData:result];
- NSArray dataDatum = [[NSArray alloc] init];
- dataDatum = [xpath searchWithXPathQuery:@"//div[@class='mainEvent']"];
- for (TFHppleElement *item in dataDatum)
- {
- [pageStrings addObject:item.content];
- }
- pageContent = [[NSArray alloc] initWithArray:pageStrings];
- }
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- [self createContentPages];
- NSDictionary *options =
- [NSDictionary dictionaryWithObject:
- [NSNumber numberWithInteger:UIPageViewControllerSpineLocationMin]
- forKey: UIPageViewControllerOptionSpineLocationKey];
- self.pageController = [[UIPageViewController alloc]
- initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
- navigationOrientation:UIPageViewControllerNavigationOrientationVertical
- options: options];
- pageController.dataSource = self;
- [[pageController view] setFrame:[[self view] bounds]];
- contentViewController *initialViewController =
- [self viewControllerAtIndex:0];
- NSArray *viewControllers =
- [NSArray arrayWithObject:initialViewController];
- [pageController setViewControllers:viewControllers
- direction:UIPageViewControllerNavigationDirectionForward
- animated:NO
- completion:nil];
- [self addChildViewController:pageController];
- [[self view] addSubview:[pageController view]];
- [pageController didMoveToParentViewController:self];}
- -(void) viewWillAppear:(BOOL)animated{
- [super viewWillAppear:animated];
- }
- - (void)didReceiveMemoryWarning
- {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- @end
Wenn der Inhalt von pageStrings
"12.11.2012",
"29.11.2012",
"05.12.2012",
"10.12.2012"
ist, so funktioniert nur das erste umblättern von 12.11.2012 zu 29.11.2012 und sonst wird nur noch 29.11.2012 angezeigt und das unendlich oft.
Vergebe ich aber pageStrings mit einer eigenen For Schleife, wie z.B.:
dann funktioniert das ganze und es gibt nicht unendlich, sondern genau 10 Seiten.
Wie kann ich die Seiten mit den Daten aus der Webseite füllen?
Danke schon mal im Voraus!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von osdev2012 ()