• 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

applicationDidFinishLaunching

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
Tach, das hab ich mir gerade aus dem Example von den Developer-Sachen "MenuMadness" abgeguckt:

- (void)applicationDidFinishLaunching:(NSNotification *)notification {
// The creation of new menus for the menu bar should be done in applicationWillFinishLaunching.
print("test");
}

Das soll, sobald die App gestartet ist, ein paar Sachen machen. (hier zum testen print)
nur: das funktioniert nicht :)
muss ich da noch irgendwas ebachten? muss die funktion noch irgendwo reingechrieben werden?

gruß
mewX, der langsam aber almählich mehr von Obj-C zu verstehen versucht ;)
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
das funktioniert nicht :)
muss ich da noch irgendwas ebachten? muss die funktion noch irgendwo reingechrieben werden?
Wo hast Du die Funktion denn reingeschrieben? Nehmen wir an, Du haettest das in die Klasse MyController eingebaut, dann musst Du noch zwei Sachen erledigen:

1. Mindestens ein Objekt der Klasse MyController muss bei Programmaufruf auch tatsaechlich instantiiert werden -- z.B. aus einer NIB-Datei.

2. Dieses Objekt muss der Delegate des Programms (genauer: der NSApplication-Instanz, die von [NSApplication sharedApplication] oder kurz NSApp zurueckgegeben wird) sein. Am bequemsten legst Du das in der o.g. NIB-Datei fest (siehe auch hier, ganz unten).
 

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
2. Dieses Objekt muss der Delegate des Programms (genauer: der NSApplication-Instanz, die von [NSApplication sharedApplication] oder kurz NSApp zurueckgegeben wird) sein. Am bequemsten legst Du das in der o.g. NIB-Datei fest (siehe auch hier, ganz unten).
Ah, danke, das hat mir gefehlt :) Jetzt funktionierts :)

OK, dann nächste Frage :) Hab schon wieder min. 'ne halbe Stunde gesucht, aber:
Habe einen tollen CustomView in meinem Hauptfenster-NIB, und einen View extra, den ich dann erst hin das Hauptfenster laden will, nachdem man was geklickt hat... Also so wie z.B. bei Preferences und so, wenn man oben was ausgewählt hat vergrörßert sich das Fenster und etwas wird hineingeladen; wobei das Vergrößern schonmal kein Problem war :)...
(geht das überhaubt so?)
Leider ist die Apple-Dokumentation für sowas reichlich unübersichtlich. Da fände ich Beispiele eigentlich mal ganz praktisch (aber fand ich schon toll gestern den Examples-Ordner entdeckt zu haben)...
 

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
Hm....
Also, ich hab einen Custom-View-Dings, verbunden an "viewer" und ein Fensterchen-View verbunden mit "MainView", dann im Controller .h
IBOutlet NSView *viewer;
IBOutlet NSView *MainView;
und in .m
[viewer addSubview:MainView];

geht nicht ;)

gruß
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
Was ist denn ein Fensterchen-View? Ist das der, der schon in Deinem Fenster liegt? Dann muesstest Du's natuerlich andersrum machen: [MainView addSubview: viewer]. Und dann am besten mit [view setFrame:] sicherstellen, dass der auch irgendwo liegt, wo man ihn tatsaechlich sehen kann.

Und gewoehn' Dir gross geschriebene Instanzvariablen ab. Sieht ja aus, als waer's 'ne Klasse.
 

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
"fensterchen-View" lol... Naja, das Ding was im IB als Icon den Schriftzug "View" trägt, und in dem die Sachen stehen, die in den "Viewer" reingeladne werden sollen...
Diesen "Viewer" hab ich ja als Objekt ("Custom-View") in das Hauptfenster hineingezogen...
Hmmm
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
Zeig' doch mal einen Screenshot von Deinem Interface Builder. So wird das nix.
 

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
Hab die tolle Idee einfach mal das projekt hochzuladen ;)

Danke für deine Hilfe!

/edit: ich seh grad, irgendwie gehts doch ;) nur macht der das so weit unten dass ichs bisher immer übersehen hab :)
 

Anhänge

  • MewstestApp.zip
    24,6 KB · Aufrufe: 59

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
Also so oder wie?
[viewer setFrame:[MainView frame]];
Das sollte doch die Größe des "Viewers" auf die Größe meines "Unter-fensters" setzen, oder?
Aber statdessen verschwindet der Inhalt von letzterem wieder ganz dadurch.......
(sorry für das MainView ;) das muss natürlich klein)
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
Also so oder wie?
[viewer setFrame:[MainView frame]];
Das koennte sozusagen aus Versehen hinhauen, wenn der "MainView" das Fenster komplett ausfuellt. Eigentlich willst Du aber eher das hier:

[viewer setFrame: [MainView bounds]];

Lies noch ein bisschen nach; es ist wichtig, die Unterschiede zwischen Bounds und Frames und ueberhaupt die View-Hierarchie richtig zu verstehen. :)

Zusatzinfo: Wenn Du willst, dass der "viewer" bei Fenstergroessenaenderung mitwaechst bzw. -schrumpft, dann kannst Du das schon im Interface Builder festlegen (Apfel-3). Aber das wusstest Du wahrscheinlich schon.
 

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
Zusatzinfo: Wenn Du willst, dass der "viewer" bei Fenstergroessenaenderung mitwaechst bzw. -schrumpft, dann kannst Du das schon im Interface Builder festlegen (Apfel-3). Aber das wusstest Du wahrscheinlich schon.
Ja, nur bei den Einstellungen komm ich auch immer durcheinander ;)
Ok, ich werd nochmal schauen... Das doofe Ding rutscht immernoch ganz nach unten ;(...
 

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
So, das werd ich wohl irgednwie hinbekommen.
Aber:
Gibt es eine einfache Funktionen um zu prüfen, ob ein Suchstring in einem anderen vorkommt? Habe bis eben gerade strstr() verwendet, aber das funktioniert irgendwie nicht mit NSString's.. Oder kann ich die NSStrings in C-chars umwandeln?
/edit:
NSRange *pos = [[self url] rangeOfString:mad:"some_string"];
if (pos != NSNotFound) {
Warum geht das nicht? (das gibt mir einen fehler von wegen typen stimmen nicht...)
 
Zuletzt bearbeitet:

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
Nächste Frage ;)
http://cocoadevcentral.com/articles/000063.php
Da steht erklärt, wie man NSTableViews macht.
Aber: WO soll ich diese Funktionen implementieren? Worauf muss ich den dataSource dann sezten?
...wieso gibts nirgendwo *gut* und am besten mit Beispielen erklärt wie diese Sachen funktionieren.. :(
 

Peter Maurer

Pommerscher Krummstiel
Registriert
16.03.04
Beiträge
3.077
NSRange *pos = [[self url] rangeOfString:mad:"some_string"];
if (pos != NSNotFound) {
Warum geht das nicht? (das gibt mir einen fehler von wegen typen stimmen nicht...)
Rate mal, warum im Datentyp NSRange das Woertchen "Range" vorkommt. ;)

Du willst das hier: ([@"magerquak" rangeOfString: @"quak"].location!=NSNotFound)

Und abgesehen davon ist NSRange kein Objekt, sondern eine Struktur. Demenstprechend gibt -rangeOfString: auch keinen Zeiger auf einen NSRange zurueck, sondern gleich den wahren Jakob. In lang hiesse es deshalb:

NSRange substringRange = [@"magerquak" rangeOfString: @"quak"];
int substringLocation = substringRange.location;
int substringLength = substringRange.length;

Und dann eben weiter mit:

if (substringLocation!=NSNotFound) NSLog(@"Juhu! Gefunden!");

Hast Du das hier schon gelesen? Besser kann man's in einem Forum auch nicht erklaeren, denke ich. Vielleicht hilft Dir auch "DragNDropOutlineView" aus Deinem Examples-Ordner weiter. Wer NSOutlineView versteht, der versteht die Mutterklasse NSTableView erst recht. :)
 
  • Like
Reaktionen: mewX

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
Rate mal, warum im Datentyp NSRange das Woertchen "Range" vorkommt. ;)

Du willst das hier: ([@"magerquak" rangeOfString: @"quak"].location!=NSNotFound)
genau, super :)
Hast Du das hier schon gelesen? Besser kann man's in einem Forum auch nicht erklaeren, denke ich. Vielleicht hilft Dir auch "DragNDropOutlineView" aus Deinem Examples-Ordner weiter. Wer NSOutlineView versteht, der versteht die Mutterklasse NSTableView erst recht. :)
Na jut dann werd ich nochmal sehen. Die Examples sind mir nur schon wieder zu aufwendig :) Ich will ja nur *eine* kleine, zweispaltige Liste, in der drei editierbare Werte sind ;) Naja wird schon.. danke.