Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Probleme mit Ausgabe in ein UITextView

Probleme mit Ausgabe in ein UITextView

MacThommes
MacThommes26.10.1209:33
Hallo, ich muss mal wieder nerven. Ich habe ein aktuelles Problem mit der Ausgabe eines Textes in einen UITextView. Ich bin dabei eine App zu schreiben. das ganze geht über das Storyboard. Diese besteht aus mehreren Viewcontrollern und einem Navigation Controller. Die Views sind miteinander über den Navigation Controller verbunden. Auf dem ersten Viewcontroller (hauptView genannt) befindet sich eine Möglichkeit via Tasten einen Wert einzustellen. Durch diesem wird ein String einer Variablen zugewiesen (funktioniert alles bestens). Eine Ausgabe dieses String in einem UITextView auf dem selben View funktioniert. Jetzt möchte ich diesen String auf einen anderen View (ausgabeView genannt) in einem eigenen UITextView ausgeben. Das funktioniert jedoch nicht. Ich habe schon die verücktesten Sachen probiert, nichts hilft.
Ich bis so ziemlich mit meinem Latein am Ende. Auch eine Recherche im Internet hat nicht weiterhelfen können. Jetzt hoffe ich darauf, das hier jemand einen Lösungsansatz hat.
Danke im Vorraus....
„Man hat´s nicht leicht, aber leicht hat´s einen....“
0

Kommentare

twilight
twilight26.10.1209:55
Der Ausgabeview hat einen eigenen Controller? Dann kannst Du z.B. vom EingabeControllerView eine Methode des AusgabeviewController aufrufen und in der dann den Wert setzen lassen:

[ausgabeVC updateTextViewWithString:myString];

Alternativ nutzt Du KVO.

Peter
„Auch dienstlich tu ich mir garantiert kein Windows an!“
0
MacThommes
MacThommes26.10.1210:39
twilight
Der Ausgabeview hat einen eigenen Controller? Dann kannst Du z.B. vom EingabeControllerView eine Methode des AusgabeviewController aufrufen und in der dann den Wert setzen lassen:

[ausgabeVC updateTextViewWithString:myString];

Alternativ nutzt Du KVO.

Peter
Der AusgabeView hat einen eigenen Controller.
Du meinst etwa so etwas?

[_detailAusgabeLabel setText: hinweisText];

Innerhalb einer Funktion wird der einegebene Wert in einer Select Case überprüft. dann wird der entsprechende String in eine Variable übergeben (hinweisText).
Wenn ich jetzt eine Button (Deteils anzeigen) anklicke, öffnet sich der andere Viewcontroller und es soll der Text in dem UITextView (detailAusgabeLabel), was sich darauf befindet angezeigt werden.
Es passiert jedoch nichts.
Das heisst, das ich im Storyboard angeben muss, was mit dem UITextView passieren soll.
Im ersten ViewController habe ich das UITextView (ersteAusgabeLabel) mit dem ViewController über die Referencing Outlets verbunden. Hier funktioniert das ganze wunderbar.
Wenn ich jetzt aber in dem anderen ViewController (detailViewController) versuche den UITextView (detailAusgabeLabel) zu verbinden, steht dann unter Referencing Outlet nur das view mit detailViewController verbunden ist.
Das bedeutet für mich, das ich erst gar nicht auf das UITextView zugreifen kann.
Ziemlich verwirrend das ganze!!

Was meinst Du mit KVO?
„Man hat´s nicht leicht, aber leicht hat´s einen....“
0
twilight
twilight26.10.1210:51
KVO = Key Value Observing. Ist aber für Deinen Fall wahrscheinlich zu viel

Also Mal in Stichpunkten mein Vorschlag:
- AusgabeVC bekommt die Variable (od. Property): myString
- im EingabeVC setzt Du [ausgabeVC.myString = self.eingabeTextField.text;
- im AusgabeVC fügst Du die Methode -(void)viewWillAppear:(BOOL)animated{} hinzu
- in diese Methode schreibst Du self.myTextfield setString:self.myString

Keine Garantie auf exakte Syntax an dieser Stelle, da grade Xcode nicht zur Hand und letzte Vorbereitungen zur Macoun-Abreise

Aber vielleicht komm ich auf der Fahrt dazu ^^

Peter
„Auch dienstlich tu ich mir garantiert kein Windows an!“
0
MacThommes
MacThommes26.10.1211:08
Danke erst mal für Deine schnelle Hilfestellung.
Ich werde jetzt erst mal etwas an die frische Luft gehen. Ich blicke jetzt nämlich überhaupt nicht mehr durch.
Ich hatte die App schon fast fertig. Da mir jedoch jemand gesagt hat, das man das so (wie unter XCode 4.3) nicht mehr macht und das man das viel bequemer über das Storyboard programmieren kann, habe ich den ganzen Mist noch mal vom neuen angefangen.
Jetzt kämpfe ich mich durch das Storyboard und verstehe nicht, warum die Ausgabe auf dem einen View funktioniert und auf dem anderen nicht....
Na dann schöne Reise und nochmals Danke!
„Man hat´s nicht leicht, aber leicht hat´s einen....“
0
MacThommes
MacThommes26.10.1211:13
Ach so:
Über den Button "Details" wechselt das Programm in den anderen View und es wird eine Funktion aufgerufen
- (IBAction)zeigeDetails:(id)sender;
Inerhalb dieser Funktion, kann ich über die Konsole den String ausgeben....
 NSLog(@"%@",hinweisText);
Funktioniert bestens. Nur auf dem scheiss (sorry) UITextView kommt nichts.
[_detailAusgabeLabel setText: hinweisText];

Find ich extrem unlogisch...
„Man hat´s nicht leicht, aber leicht hat´s einen....“
0
Urkman26.10.1211:18
Ist dein Label(_detailAusgabeLabel) im xib oder storyboard auch mit dem TextView verbunden?

PS:
Ich werde mich nie an deutsche Variabeln und Funktionen gewöhnen können
0
JF Sebastian26.10.1211:34
Mmh, entweder verstehe ich das Problem nicht wirklich oder prepareForSegue: ist die einfache Lösung:
0
MacThommes
MacThommes26.10.1215:18
Ich habe gerade mal etwas versucht.
Ich habe auf dem ersten View ein UITextView erstellt. Ich habe das so eingebunden, wie ich das eigentliche TextView eingebunden habe. Jetzt wird ohne Probleme der Text in diesem TexhView ausgegeben. Ich befürchte, das das Problem folgendes ist.
Das Programm versucht auf dem ersten View (hauptView) im UITextView (detailAusgabeView) den Text auszugeben. Da sich dieser aber (gewünscht) auf einem anderen View (detailView) befindet kann er nichts ausgeben.
Das Problem liegt also irgendwo an irgend einer Einstellung des Storyboards.
Ich mache hier Klickibunti und finde keine Möglichkeit ihm zu sagen, das er den Text im anderen View ausgeben soll...
„Man hat´s nicht leicht, aber leicht hat´s einen....“
0
Urkman26.10.1215:36
@MacThommes:
Wie schon gesagt, das liegt an den Verbindungen zwischen deinem IBOutlet und dem Element im Storyboard...
Chaeck das nochmal alles
0
MacThommes
MacThommes26.10.1218:16
Urkman
@MacThommes:
Wie schon gesagt, das liegt an den Verbindungen zwischen deinem IBOutlet und dem Element im Storyboard...
Chaeck das nochmal alles
Habe ich mittlerweile schon mehrfach.
Was mich stört ist der Umstand, das als ausgangsview, wenn ich den Button drücke nur der Hauptview anwählbar ist.
Im StoryBoard ist mit rechter Maustaste auf dem Button (der für die Ausgabe des Textes veranlassen soll) unter Touch Up Inside nur der Eintrag View Controller und zeigeDetails zu sehen.
zeigeDetails ist die Funktion, die den Text in das UITextView darstellen soll. Jedoch wäre der Eintrag View Controller nicht richtig, da es sich nicht um den ViewController handelt, auf dem sich der UITextView für die Ausgabe befindet. Ich denke hier liegt der Hund begraben.

Naja, ich mach jetzt Schluss für Heute.
Erst mal Danke an alle, die mir Helfen wollten und an die, die sich zurückgehalten haben
„Man hat´s nicht leicht, aber leicht hat´s einen....“
0
bmc desgin27.10.1200:49
zeigeDetails heißt bei dir oben aber updateString oder ähnlich...

Wenn die Funktion innerhalb der Funktion zeigeDetails nicht aufgerufen wird, kann auch nix angezeigt werden...


Cheers
„Ask your questions...“
0
Urkman27.10.1217:29
Mach mal bitte einen Screenshot vom Storyboard, welches zeigt, was für Verbindungen das UI Element hat.
0
MacThommes
MacThommes28.10.1210:01
Urkman
Mach mal bitte einen Screenshot vom Storyboard, welches zeigt, was für Verbindungen das UI Element hat.
Schau mal bitte auf meine Seite. Ich hab da einen Link gemacht, auf dem ich das Problem noch mal erkläre und die Bilder gelegt habe.

Ich hoffe es hat jemand eine Idee.

Schönes Wochenende
„Man hat´s nicht leicht, aber leicht hat´s einen....“
0
MacThommes
MacThommes04.11.1211:22
Keine eine Idee??
„Man hat´s nicht leicht, aber leicht hat´s einen....“
0
twilight
twilight04.11.1212:33
Stimmt, da war doch noch was ...

ich habe Deinen Link mal quergelesen. "Meine Vermutung ist, das die Funktion nun versucht, etwas auf dem Falschen View auszugeben. Da sie natürlich auf dem ersten View (wo sich der Button befindet) den UITextView sucht und nicht findet. Dieser befindet sich ja auf dem anderen View. Ich habe jedoch keinerlei Möglichkeit dem Programm zu sagen, das sich der benötigte UITextView auf dem anderen ViewController befindet. Er ist einfach nicht anwählbar....."

Ich versteh das nur so halb: View 1 hat nen Button. Wenn der gedrückt wird, wird ein View 2 angezeigt. Steht in der IBAction-Methode des Buttons bzw. der seque-Methode "[_detailAusgabeLabel setText: hinweisText];", wobei das _detailAusgabeLabel auf einem anderen View liegt?

Ich würde das anders lösen:
View 2 bekommt eine Property für den anzuzeigenden Text. In IBAction bzw. der seque-Methode setzt Du im Controller des View 2 den entsprechenden Wert für diese Property (view2.myText = @"huhu"). Im View 2 in der viewWillAppear-Methode füllst Du dann per setText das Label.

Peter
„Auch dienstlich tu ich mir garantiert kein Windows an!“
0
bmc desgin08.11.1200:47
Muss man aber nicht.

Je nach dem an welcher stelle das 2. view geladen wird, kann man den Text auch per ibaction mit übergeben...

Wenn der view schon geladen ist, muss man nur den view ansprechen...
„Ask your questions...“
0
Urkman08.11.1207:11
@MacThommes:

Wenn du von "zweiter View" redest, meinst du doch einen zweiten ViewController, oder?
Wenn du in "zeigeDetails" ein weiteren ViewController anzeigst, übergebe diesem doch einfach den Wert für das detailLabel und zeige es in viewDidAppear an...
0
powermaki
powermaki08.11.1208:54
Wenn Du schon ein Storyboard verwendest, solltest Du versuchen, Dinge wie "Touch Up Inside" als Trigger zum Aufrufen des nächsten Views zu vermeiden. Ziehe mit der Maus bei gedrückter -Taste doch einfach eine Verbindung zwischen dem Knopf und dem View, der dadurch geöffnet werden soll. Dadurch entsteht ein sogenannter Segue, ein Übergang, dem Du einen Namen geben kannst. Wenn Du im ViewController, dessen View den Knopf besitzt, die Methode prepareForSegue: (bereits oben durch JF Sebastian verlinkt) ergänzt und dort für den destinationViewController so etwas aufrufst wie
MyViewControllerClassName* controller = segue.destinationViewController;
[controller setText:hinweisText];
Mir riecht Dein Problem verdächtig nach falschen Instanzen bzw. Referenzen, ist aber auf die Ferne schwer zu beurteilen ...
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.