• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

XCODE NSView

AKubi

Alkmene
Registriert
08.12.08
Beiträge
30
Hi ich arbeite mich gerade in XCode en, mein Vorwissen besteht allerdings eher aus Websprachen wie PHP und ein bischen JAVA. Wirklich Probeleme habe ich dank der Vielzahl an Tutorials nicht, allerdings bekomme ich eine Sache nicht hin.

Ich habe als Startview einen ganz normales Window/View Construct ohne Table oder dergleichen und möchte jetzt das sich nach dem Druck auf einen Button ein neues Fenster öffnet.
Aber das will einfach nicht gelingen.

Mein Konstruct sieht ungefähr so aus ich habe in der AppDelegate eigentlich nix geändert und für das Window die Klasse MainView erstellt vom Typ NSObject in der meine Methode newView aufgerufen wird.
Code:
.h
-(IBACTION)newView;
.m
-(IBACTION)newView{
  NSLog(@"test");
}
Das funktioniert soweit, jetzt soll aber anstatt der Konsolenausgabe ein neues Fenster geöffnet werden und da hapert es bei mir. Einen leeren View bekomm ich hin nur mit den nibs nicht.

Kann mir da vieleicht jemand nen Tutorial oder nen Tip geben. Leider finde ich für neue Views immer nur diese Tableview Tutorials.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Im Prinzip ist es die beste Möglichkeit einen View-Nib zu laden.

Aber ehrlich gesagt solltest du etwas Einleitendes lesen.
 

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
Versteh ich das richtig? Du willst ein nib laden?

Code:
if (![NSBundle loadNibNamed:@"dasnibfile" owner:self])  {
    // hat nicht geklappt
    return;
}
// hat geklappt, weiter gehts
 

AKubi

Alkmene
Registriert
08.12.08
Beiträge
30
Ja etwas einleitendes hab ich hier und lese auch kräftig (Oreily IPhone Developer und Einsteigen in XCode) nur dieses Spezielle Thema ist da irgendwie nicht zu finden.
Wie der Aufbau im theoretischen ist hab ich glaub ich schon verstanden nur für das Praktische finde ich irgendwie nichts ausser Beispiele mit TableView.

Hier gehts auch nicht um den Startbildschirm der funzt nur der Sprung in eine weitere Ansicht, da haperts.

So gehts auf jeden Fall nicht.
Code:
 .m
-(IBACtion) newView {
  UIView *view =  [[UIView alloc] initFromNibName: @"Test" bundle:[NSBundle mainBundle]];
  [view release];
}
Edit 4 oder 5 : das Oben ist glaub ich eh Mist, sieht mir mehr nach Init Funktion aus
Code:
 .m
-(IBACtion) newView {
  [NSBundle loadNibNamed: @"Test" owner:self];
}
So ist es im Einsteigen in XCode beschrieben funzt aber auch nicht.


achso sinn der Sache soll einfach sein das ich nen Startbildschirm habe mit einer Usereingabe und nach der Validierung der Eingabe, sprung in ein anderes Fenster. Mehr eigentlich nicht.

Das mit der Usereingabe und der Validierung ist auch kein Problem, selbst mit DB oder textFiles.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Zum einen ist es ja gleichgültig, welcher View das ist. Insofern solltest du das transferieren können.

Aber dein Code leidet schon daran, dass nichts dauerhaftes gemacht wird.
 

AKubi

Alkmene
Registriert
08.12.08
Beiträge
30
OK werde doch noch einmal Antworten, vieleicht erbarmt sich ja doch jemand mir bei einem anscheinend so trivialem Problem.

@Admin Negm-Awad, ich gehe mal davon aus das du mit dauerhaft meinst, wann und wo ich meine Variablen definiere!?
Deswegen poste ich mal etwas mehr Code, ich wollte es vorhin nur kurz halten.
Code:
FirstViewController.h
#import <UIKit/UIKit.h>
#import "TestController.h"

@class TestController;
@interface FirstViewController : UIViewController {
	IBOutlet UIView *newView;
	TestController *testView;
}
@property (nonatomic, retain)TestController *testView;
-(IBAction) newView;
@end

Code:
 FirstViewController.m
#import "FirstViewController.h"


@implementation HiddenCallSmsViewController

@synthesize testView;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
   return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
    // Release anything that's not essential, such as cached data
}
- (void)dealloc {
    [super dealloc];
}
-(IBAction) newView{
	TestController *testViewController = [[[TestController alloc] initWithNibName:@"Test" bundle:nil] autorelease];
	UIView *anView = [testViewController view];
	[newView addSubview:anView];
	[self bringSubviewToFront:testViewController];
}
@end

Laut Doku hatte ich es so verstanden Das es immer ein Window Object gibt und mehrere Views und ich kann Views hinzufügen. Wie gesagt die Theorie leuchtet ja auch ein, nur wie sieht das in der Praxis aus? Oreily und Addison-Wesley bleiben da ja eher beim Theoretischen Ansatz.

Problem ist auch das er mir bei der Methode bringSubviewToFront sagt das "warning: passing argument 1 of 'bringSubviewToFront:' from distinct Objective-C type" ihm anscheinend etwas fehlt.

Tja wie gesagt bin noch recht neu in XCode, die letzten Jahre habe ich eigentlich nur PHP und JAVA (und was dazugehört) Programmiert.
 
Zuletzt bearbeitet: