• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Der Sommer ist da! Laue Nächte, lange Abende im Biergarten und Mücken in Heeresstärke - dazu passend lautet das Thema unseres Fotowettbewerbs im Juni Nachtleben --> Klick

UIWebView + Java Script

jo, habe ich in deinem Beitrag gelesen.

So TroRon zum testen, und auch nur um das Delegating zu verstehen kannst du mal per
- (void)setDelegate: (id)newDelegate;den delegate auf self setzen also [webDisplay setDelegate:self]; und in der Klasse, wo du das machst, eine Methode viewDidLoadfinishes implementieren wo du genau die JavaScript Anweisung ausführst.

also

Code:
-(void) method{
    [webDisplay setDelegate: self];
    [webDisplay loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:URL]]];
}

- (void)webViewDidFinishLoad: ([URL="http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UIWebView"]UIWebView[/URL] *)webDisplay {
        [webDisplay stringByEvaluatingJavaScriptFromString:@"switchview()"];
}
 
okay, dann hat sich meine Annahme bestätigt. Um es einfacher zu machen, kannst du ja ein delegate:self machen ;) Solltest du dir aber nicht angewöhnen. Mir fällt aber grade nicht ein, inwiefern man den Delegate richtig setzt, habe das mal gemacht ist aber schon etwas her.
Genau, das sollte man sich gar nicht erst angewöhnen, denn das widerspricht komplett dem Zweck eines Delegates. Durch Delegating spart man sich das erstellen von Subklassen, um ein verhalten eines Objekts zu beeinflussen. Macht man nun ein Objekt zum eigenen Delegate, müsste man trotzdem eine Subklasse erstellen, um die Delegate-Methoden zu implementieren. Dann kann man sich das Delegating auch gleich an die Backe kleben.

MacApple
 
ich habe mal oben ein mögliches Vorgehen als Code gezeigt, ich denke das sollte so gehen.
 
@beide

Ich wollte hier keinen "Glaubenskrieg" auslösen :-)

Ich werde mich in dem Fall heute Abend nochmals in Ruhe mit der Delgate Geschichte befassen.

Ich danke Euch beiden jedenfalls sehr für Eure Zeit und Eure hinweise.

Werde mich wieder melden :-)
 
das ist kein "Glaubenskrieg" wir sind beide der Meinung, dass das extrem schlechter Stil ist ;)
 
Hihi, auch wahr...

Aber es ist schön in einem Forum so gute Hilfe zu bekommen :-)

Danke nochmals ...
 
du hast mein Code Schnippsel oben noch mitbekommen? ;) Kannst ja mal bescheid geben, ob das tatsächlich so funktioniert. Method ist natürlich die Methode, wo du bei dir das aufgerufen hast, weiß ja nicht wie das bei dir hieß. Bin selbst son bisschen gespannt, da ich Cocoa Gui irgendwie mal vor 1,5 Jahren zuletzt programmierte.
 
Den Schnippsel habe ich mitbekommen, Danke.

Werde mich diesem, doch sehr spannenden Thema, heute Abend wieder voller Freude widmen :-)
 
Hallo Karolherbst

Also Grundsätzlich scheint dein Code-Schnipsel zu funktionieren. Allerdings werde ich mich nun daran machen, die ganze Delegat-Geschichte korrekt zu lernen :-)

Habe nun nämlich eine lustige Warnung, welche ich im Moment noch nicht so richtig zuordnen kann:
Local declaration of 'webDisplay' hides instance variable

Aber dank Dir bzw. Euch, bin ich nun auf dem richtigen Weg und das Delegate werde ich auch noch in meine Kopf bringen.

Ich gehe davon aus, dass diese Fehlermeldung eben von dem

[webDisplay setDelegate: self];

kommen könnte.
 
nein. das passiert hier - (void)webViewDidFinishLoad: (UIWebView *)webDisplay

hier wird die Instanzvariable namens webDisplay mit der aus der MethodenSignatur überschrieben.

Folgendes wäre eine Abhilfe beispielsweise:
Code:
- (void)webViewDidFinishLoad: (UIWebView *)aUIWebView {
        [aUIWebView stringByEvaluatingJavaScriptFromString:@"switchview()"];
}
 
Ist logisch, ich seh den Wald vor lauter Bäumen nicht mehr. Ich denke für heute reicht es mir :-)

Morgen muss ich dem Teil dann noch beibringen, dass es diese Aktion nur einmal ausführt, und nicht kontinuierlich, sonst geht mir da irgendwann der Speicher aus ;-)))

Ganz herzlichen Dank nochmals ...

Habe wieder sehr viel lernen dürfen :-)

NACHTRAG:
soeben über return; gestolpert. Nun aber Gute Nacht :-)
 
Zuletzt bearbeitet: