Anfängerproblem - Absturz direkt beim Start

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

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Anfängerproblem - Absturz direkt beim Start

    Hey Leute,

    Ich versuche zZ eine App mit 3 Tabs zu erstellen, jedoch stürzt dieses direkt beim Start ab, könnt Ihr helfen?
    Ist bestimmt nur ne Kleinigkeit, aber iwo muss man ja mal anfangen :D
    An den .xib Dateien wurde nichts geändert, ansonsten habe ich den AboutViewController erstellt und diese noch nicht in die TabBar eingebunden. Zudem habe ich über das Refactoring die Namen der Controller geändert. Vllt ist da irgendwo das Problem?

    Die Exception lautet: NSInternalInconsistencyException

    Der Quellcode befindet sich hier:
    pastebin.com/SccJzs1z


    lG
  • Kann auch nicht funktionieren

    Quellcode

    1. Could not load NIB in bundle:
    sagt dir doch was schief läuft.

    Quellcode

    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    2. {
    3. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    4. // Override point for customization after application launch.
    5. UIViewController *calenderVC = [[CalenderViewController alloc] initWithNibName:@"CalenderViewController" bundle:nil];
    6. UIViewController *mensaVC = [[MensaViewController alloc] initWithNibName:@"MensaViewController" bundle:nil];
    7. UIViewController *aboutMV = [[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:nil];
    8. self.tabBarController = [[UITabBarController alloc] init];
    9. self.tabBarController.viewControllers = @[calenderVC, mensaVC, aboutMV];
    10. self.window.rootViewController = self.tabBarController;
    11. [self.window makeKeyAndVisible];
    12. return YES;
    13. }
    Alles anzeigen


    Dann funktionierts
  • Ah :) Good to know ;)

    Ist es möglich für eine Klasse die von UIView abgeleitet ist eine .xib zu nutzen?
    Und zwar will ich in der App in dem MensaViewController eine ScrollView nutzen, welche durch Instanzen der MensaView scrolled, die mir die Mensapläne von Montag bis Freitag zeigen (Zum initalisieren erhält die View ein Indize, zb Montag == 0). Oder muss man das alles in dem drawRect Kram selber zeichnen?

    Wie kann man das sonst lösen?
  • Danke für den Tipp, hab diese jetzt eingebunden, nur ist die gesamte Page leicht nach unten verschoben, wie lässt sich dies beheben?

    Code des ViewControllers:

    Quellcode

    1. #import "MensaViewController.h"
    2. @interface MensaViewController ()
    3. @end
    4. @implementation MensaViewController
    5. @synthesize pageViewController;
    6. @synthesize modelArray;
    7. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    8. {
    9. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    10. if (self) {
    11. self.title = NSLocalizedString(@"Mensa", @"Mensa");
    12. self.tabBarItem.image = [UIImage imageNamed:@"MensaTab"];
    13. }
    14. return self;
    15. }
    16. - (void)viewDidLoad
    17. {
    18. [super viewDidLoad];
    19. self.modelArray = [[NSMutableArray alloc] init];
    20. for (int index = 1; index <= 12 ; index++)
    21. {
    22. [self.modelArray addObject:[NSString stringWithFormat:@"Page %d",index]];
    23. }
    24. //Step 1
    25. //Instantiate the UIPageViewController.
    26. self.pageViewController = [[UIPageViewController alloc]
    27. initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
    28. navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
    29. //Step 2:
    30. //Assign the delegate and datasource as self.
    31. self.pageViewController.delegate = self;
    32. self.pageViewController.dataSource = self;
    33. //Step 3:
    34. //Set the initial view controllers.
    35. MensaContentViewController *contentViewController = [[MensaContentViewController alloc] initWithNibName:@"MensaContentViewController" bundle:nil];
    36. contentViewController.labelContents = [self.modelArray objectAtIndex:0];
    37. NSArray *viewControllers = [NSArray arrayWithObject:contentViewController];
    38. [self.pageViewController setViewControllers:viewControllers
    39. direction:UIPageViewControllerNavigationDirectionForward
    40. animated:NO
    41. completion:nil];
    42. //Step 4:
    43. //ViewController containment steps
    44. //Add the pageViewController as the childViewController
    45. [self addChildViewController:self.pageViewController];
    46. //Add the view of the pageViewController to the current view
    47. [self.view addSubview:self.pageViewController.view];
    48. //Call didMoveToParentViewController: of the childViewController, the UIPageViewController instance in our case.
    49. [self.pageViewController didMoveToParentViewController:self];
    50. //Step 5:
    51. //Assign the gestureRecognizers property of our pageViewController to our view's gestureRecognizers property.
    52. self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
    53. // Do any additional setup after loading the view, typically from a nib.
    54. }
    55. - (void)didReceiveMemoryWarning
    56. {
    57. [super didReceiveMemoryWarning];
    58. // Dispose of any resources that can be recreated.
    59. }
    60. - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
    61. viewControllerBeforeViewController:(UIViewController *)viewController
    62. {
    63. NSUInteger currentIndex = [self.modelArray indexOfObject:[(MensaContentViewController *)viewController labelContents]];
    64. if(currentIndex == 0)
    65. {
    66. return nil;
    67. }
    68. MensaContentViewController *contentViewController = [[MensaContentViewController alloc] init];
    69. contentViewController.labelContents = [self.modelArray objectAtIndex:currentIndex - 1];
    70. return contentViewController;
    71. }
    72. - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
    73. viewControllerAfterViewController:(UIViewController *)viewController
    74. {
    75. NSUInteger currentIndex = [self.modelArray indexOfObject:[(MensaContentViewController *)viewController labelContents]];
    76. if(currentIndex == self.modelArray.count-1)
    77. {
    78. return nil;
    79. }
    80. MensaContentViewController *contentViewController = [[MensaContentViewController alloc] init];
    81. contentViewController.labelContents = [self.modelArray objectAtIndex:currentIndex + 1];
    82. return contentViewController;
    83. }
    84. @end
    Alles anzeigen



    Im Anhang noch ein Screenshot
  • in MensaViewController:

    Quellcode

    1. self.view.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
    2. self.pageViewController.view.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);


    ändert nichts :/ Oder sind das die falschen Objekte, bzw muss das an einer ganz bestimmten Stelle passieren? Habe es in der init und viewDidLoad getestet
  • Quellcode

    1. #import "MensaViewController.h"
    2. @interface MensaViewController ()
    3. @end
    4. @implementation MensaViewController
    5. @synthesize pageViewController;
    6. @synthesize modelArray;
    7. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    8. {
    9. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    10. if (self) {
    11. self.title = NSLocalizedString(@"Mensa", @"Mensa");
    12. self.tabBarItem.image = [UIImage imageNamed:@"MensaTab"];
    13. }
    14. return self;
    15. }
    16. - (void)viewDidLoad
    17. {
    18. [super viewDidLoad];
    19. self.modelArray = [[NSMutableArray alloc] init];
    20. for (int index = 1; index <= 12 ; index++)
    21. {
    22. [self.modelArray addObject:[NSString stringWithFormat:@"Page %d",index]];
    23. }
    24. //Step 1
    25. //Instantiate the UIPageViewController.
    26. self.pageViewController = [[UIPageViewController alloc]
    27. initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
    28. navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
    29. //Step 2:
    30. //Assign the delegate and datasource as self.
    31. self.pageViewController.delegate = self;
    32. self.pageViewController.dataSource = self;
    33. //Step 3:
    34. //Set the initial view controllers.
    35. MensaContentViewController *contentViewController = [[MensaContentViewController alloc] initWithNibName:@"MensaContentViewController" bundle:nil];
    36. contentViewController.labelContents = [self.modelArray objectAtIndex:0];
    37. NSArray *viewControllers = [NSArray arrayWithObject:contentViewController];
    38. [self.pageViewController setViewControllers:viewControllers
    39. direction:UIPageViewControllerNavigationDirectionForward
    40. animated:NO
    41. completion:nil];
    42. //Step 4:
    43. //ViewController containment steps
    44. //Add the pageViewController as the childViewController
    45. [self addChildViewController:self.pageViewController];
    46. //Add the view of the pageViewController to the current view
    47. [self.view addSubview:self.pageViewController.view];
    48. //Call didMoveToParentViewController: of the childViewController, the UIPageViewController instance in our case.
    49. [self.pageViewController didMoveToParentViewController:self];
    50. //Step 5:
    51. //Assign the gestureRecognizers property of our pageViewController to our view's gestureRecognizers property.
    52. self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
    53. // Do any additional setup after loading the view, typically from a nib.
    54. self.view.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
    55. self.view.autoresizesSubviews = YES;
    56. self.pageViewController.view.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
    57. self.pageViewController.view.autoresizesSubviews = YES;
    58. contentViewController.view.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
    59. }
    60. - (void)didReceiveMemoryWarning
    61. {
    62. [super didReceiveMemoryWarning];
    63. // Dispose of any resources that can be recreated.
    64. }
    65. #pragma mark - UIPageViewControllerDataSource Methods
    66. - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
    67. viewControllerBeforeViewController:(UIViewController *)viewController
    68. {
    69. NSUInteger currentIndex = [self.modelArray indexOfObject:[(MensaContentViewController *)viewController labelContents]];
    70. if(currentIndex == 0)
    71. {
    72. return nil;
    73. }
    74. MensaContentViewController *contentViewController = [[MensaContentViewController alloc] init];
    75. contentViewController.labelContents = [self.modelArray objectAtIndex:currentIndex - 1];
    76. return contentViewController;
    77. }
    78. - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
    79. viewControllerAfterViewController:(UIViewController *)viewController
    80. {
    81. NSUInteger currentIndex = [self.modelArray indexOfObject:[(MensaContentViewController *)viewController labelContents]];
    82. if(currentIndex == self.modelArray.count-1)
    83. {
    84. return nil;
    85. }
    86. MensaContentViewController *contentViewController = [[MensaContentViewController alloc] init];
    87. contentViewController.labelContents = [self.modelArray objectAtIndex:currentIndex + 1];
    88. return contentViewController;
    89. }
    90. @end
    Alles anzeigen