XCode4 - Starthilfe (iPhone)

CaptainChaos

Neues Mitglied
Thread Starter
Mitglied seit
22.05.2011
Beiträge
8
Hallo zusammen,

ich bräuchte mal eine kleine XCode Starthilfe. Ich möchte eine Anwendung mit mehreren Views basteln.

Jetzt habe ich im IB einen View erzeugt, der oben in der Statusleiste einen Button hat, vo dem ein zweiter View geöffnet werden soll. Den zweiten View habe ich auch erstellt.

Wie kann ich jetzt den Button mit dem 2.View verbinden? Ich weiss, RTFM... habe ich auch (allerdings für XCode 3), aber irgendwie fehlt mir der richtige Tipp.

Eine kleine Anleitung wäre nicht schlecht.

Vielleicht hat ja jemand Lust Anfänger-Starthilfe zu geben.

Vielen Dank und viele Grüße
- CaptainChaos -
 

below

Aktives Mitglied
Mitglied seit
15.03.2004
Beiträge
13.564
Das ganze unterscheidet sich zwischen Xcode 3 und 4 nicht. Wie soll denn der zweite View geöffnet werden? Modal? Mit einem Navigation Controller?

Alex
 

cropfaktor

Aktives Mitglied
Mitglied seit
18.01.2008
Beiträge
1.148
Vielleicht hilft Dir mein Beispielcode:

Code:
// 1. Window-based Application
// 2. MainWindow.xib --> Interface Builder --> Vorhandenes Fenster --> 1 Button --> Title "Neues Fenster"
// 3. MainWindow.xib --> Interface Builder --> UIView auf Seitenleiste ziehen --> 1 Label + 1 Button "Schliessen"
// 4. Headerdatei:
	IBOutlet UIView *infoFenster;
	// + 2 Actions:
		- (IBAction) infoFenster;
		- (IBAction) hauptFenster;
// 5. Codedatei:
	- (IBAction) infoFenster
{  
    //Bevor geöffnet wird, soll aber die Statusbar verschwinden, damit 
    //die UINavigationBar komplett sichtbar wird und nicht durch den
    //Carrier, Sendestärke, Zeit und Batteriesymbol verdeckt wird
    [UIApplication sharedApplication].statusBarHidden = YES;
    
    //Öffne das zweite Fenster
    //"self" muss sein, sonst kein Zugriff auf die Instanz von UIWindow
    [self.window addSubview:infoFenster];
}

- (IBAction) hauptFenster
{
    //Die Statusbar soll jetzt wieder sichtbar gemacht werden
    [UIApplication sharedApplication].statusBarHidden = NO;
    
    
    //Aufruf einer UIView-Methode des Infofensters selbst
    //removeFromSuperview entfernt die aufrufende UIView-
    //Instanz und bringt die darunterliegende Schicht zum Vorschein
    [infoFenster removeFromSuperview];
}

// 6. Interface Builder --> Outlet-Verbindung auf das 2. Fenster
//						--> Action-Verbindungen auf die Schaltflächen
Viel Erfolg
Andreas
 

below

Aktives Mitglied
Mitglied seit
15.03.2004
Beiträge
13.564
Hrm, OK, gut, so kann man das auch machen ...

Aber Du verbindest einfach im Interface Builder view genau so in Xc3 den 2. view mit dem Outlet für den 2. View

Alex
 

CaptainChaos

Neues Mitglied
Thread Starter
Mitglied seit
22.05.2011
Beiträge
8
So, ich habe probiert und noch immer keinen Durchblick.

Also, ich habe einen View mit einer NavigationBar. Darin ist ein "Icon". Wenn ich das anklicke, dann soll der 2.View geöffnet werden.

Ich habe auch schon einen 2.View. Auch in diesem View ist ein NavigationBar vorhanden. Da sind 2 Icons drin "Cancel" und "Done".

Und nun? Wo finde ich denn den Outlet?

Gruss
CaptainChaos
 

below

Aktives Mitglied
Mitglied seit
15.03.2004
Beiträge
13.564
Lad mal Deinen Code hoch.

Alex
 

CaptainChaos

Neues Mitglied
Thread Starter
Mitglied seit
22.05.2011
Beiträge
8
So, hier der Code:

die .h Datei:

Code:
//
//  Gutschein2AppDelegate.h
//  Gutschein2
//
//  Created by Tim-Chr. Hanschen on 24.05.11.
//  Copyright 2011 Hanschen-IT. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface Gutschein2AppDelegate : NSObject <UIApplicationDelegate> {

}

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

und hier die .m:
Code:
//
//  Gutschein2AppDelegate.m
//  Gutschein2
//
//  Created by Tim-Chr. Hanschen on 24.05.11.
//  Copyright 2011 Hanschen-IT. All rights reserved.
//

#import "Gutschein2AppDelegate.h"

@implementation Gutschein2AppDelegate


@synthesize window=_window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    [self.window makeKeyAndVisible];
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
    /*
     Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
     Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
     */
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    /*
     Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
     If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
     */
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    /*
     Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
     */
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    /*
     Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
     */
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    /*
     Called when the application is about to terminate.
     Save data if appropriate.
     See also applicationDidEnterBackground:.
     */
}

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

@end
Ich hatte eben neu angefangen. Wie gehabt zwei Views, beide mit NavigationBar. Im 1.View ist ein Icon, was den 2.View öffnen soll.

Das kann doch wohl nicht so schwer sein... ;-)

Viele Grüße
 

below

Aktives Mitglied
Mitglied seit
15.03.2004
Beiträge
13.564
Pack mal das ganze Projekt hier als Attachment rein

Alex
 

cropfaktor

Aktives Mitglied
Mitglied seit
18.01.2008
Beiträge
1.148
na ja, wenn Du den Outlet nicht anlegst, kann er auch schlecht gefunden werden.
Wenn Du nicht weisst, warum und wie Du den anlegen sollst, dann hilft Dir auch ein weiteres Beispiel nicht weiter.
Verstehe auch die Sinnhaftigkeit des Codehochladens nicht. Standardcode, denn jede Projektanlage erzeugt. Warum hochladen?
 

cropfaktor

Aktives Mitglied
Mitglied seit
18.01.2008
Beiträge
1.148
Na guut,

dann mal dass hier in der Anlage.

Viel Erfolg
Andreas
 

CaptainChaos

Neues Mitglied
Thread Starter
Mitglied seit
22.05.2011
Beiträge
8
Hallo Andreas,

ich habe es mal ausprobiert... es funktioniert (natürlich). Jetzt muss ich mal schauen, was Du da gemacht hast. Wie lange hast Du denn dafür gebraucht? Sicherlich doch nur ein paar Minuten, oder?

Irgendwie ist bei mir mit XCode noch nicht so ganz der Groschen gefallen. Bisher habe ich nur "anders" programmiert, mehr so den alten Kram ;-)

Ich werde dann mal ein wenig weiterbasteln... so schwer kann das doch wohl nicht sein ;-)

Schönen Abend noch.

Gruss
CaptainChaos
 

cropfaktor

Aktives Mitglied
Mitglied seit
18.01.2008
Beiträge
1.148
Hi,

gemacht habe ich es unter einer Minute und wie oben von mir beschrieben. Dein Problem dürfte sein, dass es keine gute Erklärung gibt und wer was anderes behauptet.... Ich habe nahezu jedes Buch hier und überall sind Fehler über Fehler und naturgemäß altes SDK und massive Probleme mit einem schlichten Punkt: Nur weil man programmieren kann, kann man noch lange nicht erklären oder ist gar didaktisch dazu in der Lage.
Objective-C ist zu erlernen, das ganze XCODE-COCOA-Geraffel nur durch Geklicke, Zufallstreffer und Übung und nochmals Übung.
Schaff Dir, wenn Du etwas ordentliches hinbekommen hast, ein HOW-TO in Deinen Worten und gut ist. Objective-C-Bücher gibt es einige sehr gute, viele nicht gute und zur iPhone- bzw. iPad-Programmierung überhaupt kein gutes. Deutschsprachig sowieso nicht.
Und selbst die Apple-Beispiele glänzen mit "Missing base SDK" und einigem mehr. Erstellt auf dem alten SDK und Du als Anfänger kannst gar nicht nachvollziehen, wie die im Interface-Builder gearbeitet haben. Vergiss es. Ich hangele mich da seit einem Vierteljahr durch.

Ist nur meine Meinung und VBA war dagegen ein Klacks. PHP sowieso.

Viel Erfolg, nicht aufgeben und fleißigst Notizen machen :)
Andreas
 
Zuletzt bearbeitet:

CaptainChaos

Neues Mitglied
Thread Starter
Mitglied seit
22.05.2011
Beiträge
8
Mit der Doku stimmt wohl. Ich habe mir ja schon einige Bücher gekauft.. über Objective-C, Cocoa und iPhone Programmierung, aber wie gesagt, der Durchblick fehlt noch.

Ich habe bisher ohne "Interface Builder" o.ö. programmiert. Ich komme eher daher, wo noch alles handgemacht war ;-)

Na ja, ich hoffe, dass es hier dann mal den Durchblick haben werden.

Vielen Dank nochmals und viele Grüße
CaptainChaos
 

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.629
Ich habe bisher ohne "Interface Builder" o.ö. programmiert. Ich komme eher daher, wo noch alles handgemacht war ;-)
Kannst Du doch machen.
Auf dem iOS ist es auch nicht so umfangreich wie auch auf Mac OS mit dem GUI Elementen ;-)

Viele Grüße
 

buk

Aktives Mitglied
Mitglied seit
27.10.2003
Beiträge
1.040
Viele professionelle Entwickler arbeiten ohne den Interface Builder, mein Team auch.

Alex
Wie geht das denn dann vor sich? Ihr habt einen Designer der dem Team eine Vorlage gibt, und dann wird das Pixelgenau im Quellcode umgesetzt?
 

BSDheld

Mitglied
Mitglied seit
27.01.2009
Beiträge
712
Das man mal GUI-Elemente per Code erzeugen muss ist klar. Aber welchen Vorteil hat es, die ganze GUI per Code zu generieren?

B.
 

below

Aktives Mitglied
Mitglied seit
15.03.2004
Beiträge
13.564
* Reusability
* xibs sind nicht besonders schön im SCM
* Änderungen in Xibs lassen sich für das Team nicht so schön und klar Dokumentieren wie Änderungen im xib

Alex
 
Oben