• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Grundlegende Fragen zum NavigationsController

Jorgo

Jonagold
Registriert
19.04.10
Beiträge
23
Hallo Leute,

schön das ich so ein tolles Forum hier gefunden habe. Mein Name ist Jorgo (ja so heiß ich :)).
Studiert habe ich Informatik, aber dennoch vom Programmieren nur Grundkentnisse. Nun hab ich seit einem Monat ein Mac und interessiere mich für die IPhone programmierung. Grundlagen Objective-C hab ich mir angeeignet.
Soviel zu mir, mit einem kurzen Einblick. So und nun zu meiner Frage, welche für die Fortgeschrittenen hier wahrscheinlich nur ein lächeln übrig haben.... Dennoch möchte ich euch bitten, mir meine Denkfehler und die vorgehensweise gleich zu erläutern.

Möchte zunächst eine NavigationsBar mit 2 Button, die mich zu den verschiedenen Views (Blau und Gelb) schalten. Die App ist soweit, dass die Navigationsbar soweit ohne Buttons zunächst mal angezeigt wird.

1) Hab mir eine Windows-based-application erstellt.
2) Dazu habe ich für meine 2 Views jeweils neue UIViewControllerSubclasses erstellt+eine RootControllerView. Dazu 2 XIB-Files für meine 2 Views.
3)Über den InterfaceBuilder hab ich meine mainWindows.xib so konfiguriert dass ich einen Navigations-Controller in mein Projekt gezogen habe, und einen Outlet zu meinen app-Delegate erzeugt habe.Das appDelegate wiederum mit meinen Files-Owner. Den NavigationsController hab ich über die Attributes im Inspector meinem ersten XIB zugewiesen.

Der Code sieht dann so aus:

AppDelegate.h
Code:
#import <UIKit/UIKit.h>



@interface NavBarAppDelegate : NSObject <UIApplicationDelegate> 
{
    UIWindow *window;
    IBOutlet UINavigationController *navigationController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;


@end
AppDelegate.m
Code:
@implementation NavBarAppDelegate


@synthesize window;
@synthesize navigationController;


-(void) applicationDidFinishLaunching:(UIApplication *)application 
{        
    // Override point for customization after application launch
    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];
    //return YES;
}


- (void)dealloc 
{
    [window release];
    [navigationController release];
    [super dealloc];
}


@end
RootViewController.h
Code:
#import <UIKit/UIKit.h>

@class GelbViewController;
@class BlauerViewController;

@interface RootViewController : UIViewController 
{
    BlauerViewController *blauerViewController;
    GelbViewController *gelbViewController;
    

}

@property (retain, nonatomic) BlauerViewController *blauerViewController;
@property (retain, nonatomic) GelbViewController *gelbViewController;

-(IBAction)switchViews:(id)sender;

@end
RootViewController.m

Code:
#import "RootViewController.h"
#import "NavBarAppDelegate.h"
#import "GelbViewController.h"
#import "BlauerViewController.h"



@implementation RootViewController
@synthesize blauerViewController;
@synthesize gelbViewController;
Der Code für den BlueView- und dem GelbViewController ist noch leer.

Meine Frage: Hab ich mich beim Aufbau blamiert oder ist es ok soweit. Dann kann ich ja den Aufbau weiter machen. Vielen Dank!!

Gruß Jorgo
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Hallo,

der Code ist bis jetzt super aufgebaut (objektorientierte Programmierung verstanden usw). Jetzt würde es also nur noch darum gehen, einen NavigationController zu benutzen, um eine ViewController-Hierarchie zu erstellen. Das ist keine grosse Sache. Ich empfehle dir einfach, dieses (Apple Documentation) Dokument ein Wenig anzuschauen. Die gesamte Dokumentation für Cocoa, UIKit, Objective-C usw. findest du übrigens auch direkt in Xcode (Help -> Documentation).

Gruss ppocket
 

Jorgo

Jonagold
Registriert
19.04.10
Beiträge
23
Hallo ppocket,

danke für den Link. Hab zwar in der Apple Documentation schon geschaut, dass allerdings noch nicht gefunden. Hoffe ich kann bei Fragen mich noch mal melden.
 

Jorgo

Jonagold
Registriert
19.04.10
Beiträge
23
Mit self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] erzeuge ich zur meiner Navigationsbar Schaltflächen. Ich möchte nun von meinem "BlauenViewController" zu dem "Gelben" schalten. Der Blaue ist ja so konfiguriert, dass er über main Windows.xib geladen wird. Möchte ich nun im "BlauenViewController" über "vidDidLoad" den Befehl einfügen, passiert nix. Was mach ich falsch!?
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Ich glaube, du solltest nochmal ein Wenig Code posten oder dein gesamtes Projekt hochladen (ohne Build-Ordner bitte!). Es ist immer schlecht, wenn man sich vorstellen muss, was da Falsches sein könnte :)

Gruss ppocket

PS: Ich hoffe ja jetzt mal, dass bei dir nirgendwo im Code 'vidDidLoad' steht, denn diese Methode gibt es nicht in UIView! :p
 

Jorgo

Jonagold
Registriert
19.04.10
Beiträge
23
Ich glaube, du solltest nochmal ein Wenig Code posten oder dein gesamtes Projekt hochladen (ohne Build-Ordner bitte!). Es ist immer schlecht, wenn man sich vorstellen muss, was da Falsches sein könnte :)

Gruss ppocket

PS: Ich hoffe ja jetzt mal, dass bei dir nirgendwo im Code 'vidDidLoad' steht, denn diese Methode gibt es nicht in UIView! :p

Hallo,

jetzt hats geklappt.

Doch hab in den jeweiligen Controller (void)viewDidLoad auskommentiert und die Buttons erstellt.:)

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
Code:
- (void)viewDidLoad 
   {
        
       [super viewDidLoad];
           
       
       self.navigationItem.title = @"Start";
       self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] 
                                                 initWithTitle:@"Über uns"
                                                  style:UIBarButtonItemStylePlain
                                                 target:self 
                                                  action:@selector(switchNavBar:)]autorelease];
       
  }
So wie ich es verstanden habe, wird diese Methode genutzt, wenn XIB-Dateien vorhanden sind. In meinem Root-Controller steht dann die switchNavBar Funktion.