Paged Application mit HTML Dateien

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Paged Application mit HTML Dateien

    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:

    Quellcode

    1. #import "contentViewController.h"
    2. @interface contentViewController ()
    3. @end
    4. @implementation contentViewController
    5. @synthesize label,dataObject;
    6. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    7. {
    8. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    9. if (self) {
    10. // Custom initialization
    11. }
    12. return self;
    13. }
    14. - (void)viewDidLoad
    15. {
    16. [super viewDidLoad];
    17. // Do any additional setup after loading the view from its nib.
    18. }
    19. -(void) viewWillAppear:(BOOL)animated{
    20. [super viewWillAppear:animated];
    21. label.text=dataObject;
    22. }
    23. - (void)didReceiveMemoryWarning
    24. {
    25. [super didReceiveMemoryWarning];
    26. // Dispose of any resources that can be recreated.
    27. }
    28. @end
    Alles anzeigen


    (label ist das IBOutlet aus dem XIB Dokument)


    und hier der Message File des PageViewControllers:

    Quellcode

    1. #import "ViewController.h"
    2. @implementation ViewController
    3. @synthesize pageController, pageContent,dataDatum;
    4. //init
    5. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    6. {
    7. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    8. if (self) {
    9. // Custom initialization
    10. }
    11. return self;
    12. }
    13. //pageViewDataSource
    14. - (contentViewController *)viewControllerAtIndex:(NSUInteger)index
    15. {
    16. // Return the data view controller for the given index.
    17. if (([self.pageContent count] == 0) ||
    18. (index >= [self.pageContent count])) {
    19. return nil;
    20. }
    21. // Create a new view controller and pass suitable data.
    22. contentViewController *dataViewController =
    23. [[contentViewController alloc]
    24. initWithNibName:@"contentViewController"
    25. bundle:nil];
    26. dataViewController.dataObject =
    27. [self.pageContent objectAtIndex:index];
    28. return dataViewController;
    29. }
    30. - (NSUInteger)indexOfViewController:(contentViewController *)viewController
    31. {
    32. return [self.pageContent indexOfObject:viewController.dataObject];
    33. }
    34. - (UIViewController *)pageViewController:
    35. (UIPageViewController *)pageViewController viewControllerBeforeViewController:
    36. (UIViewController *)viewController
    37. {
    38. NSUInteger index = [self indexOfViewController:
    39. (contentViewController *)viewController];
    40. if ((index == 0) || (index == NSNotFound)) {
    41. return nil;
    42. }
    43. index--;
    44. return [self viewControllerAtIndex:index];
    45. }
    46. - (UIViewController *)pageViewController:
    47. (UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
    48. {
    49. NSUInteger index = [self indexOfViewController:
    50. (contentViewController *)viewController];
    51. if (index == NSNotFound) {
    52. return nil;
    53. }
    54. index++;
    55. if (index == [self.pageContent count]) {
    56. return nil;
    57. }
    58. return [self viewControllerAtIndex:index];
    59. }
    60. //custom method
    61. - (void) createContentPages
    62. {
    63. NSMutableArray *pageStrings = [[NSMutableArray alloc] init];
    64. NSData *result = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"beispielURL"]];
    65. //init for parsing
    66. TFHpple *xpath = [[TFHpple alloc] initWithHTMLData:result];
    67. NSArray dataDatum = [[NSArray alloc] init];
    68. dataDatum = [xpath searchWithXPathQuery:@"//div[@class='mainEvent']"];
    69. for (TFHppleElement *item in dataDatum)
    70. {
    71. [pageStrings addObject:item.content];
    72. }
    73. pageContent = [[NSArray alloc] initWithArray:pageStrings];
    74. }
    75. - (void)viewDidLoad
    76. {
    77. [super viewDidLoad];
    78. [self createContentPages];
    79. NSDictionary *options =
    80. [NSDictionary dictionaryWithObject:
    81. [NSNumber numberWithInteger:UIPageViewControllerSpineLocationMin]
    82. forKey: UIPageViewControllerOptionSpineLocationKey];
    83. self.pageController = [[UIPageViewController alloc]
    84. initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
    85. navigationOrientation:UIPageViewControllerNavigationOrientationVertical
    86. options: options];
    87. pageController.dataSource = self;
    88. [[pageController view] setFrame:[[self view] bounds]];
    89. contentViewController *initialViewController =
    90. [self viewControllerAtIndex:0];
    91. NSArray *viewControllers =
    92. [NSArray arrayWithObject:initialViewController];
    93. [pageController setViewControllers:viewControllers
    94. direction:UIPageViewControllerNavigationDirectionForward
    95. animated:NO
    96. completion:nil];
    97. [self addChildViewController:pageController];
    98. [[self view] addSubview:[pageController view]];
    99. [pageController didMoveToParentViewController:self];}
    100. -(void) viewWillAppear:(BOOL)animated{
    101. [super viewWillAppear:animated];
    102. }
    103. - (void)didReceiveMemoryWarning
    104. {
    105. [super didReceiveMemoryWarning];
    106. // Dispose of any resources that can be recreated.
    107. }
    108. @end
    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.:

    Quellcode

    1. for(int i =1; i<11;i++){
    2. [pageStrings addObject:[NSString stringWithFormat:@"%d",i]];
    3. }

    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 ()

  • Mac & i Test Abo