Uitlezen 'variabelen' tussen 'views'

Uitlezen 'variabelen' tussen 'views' discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Wellicht is het supersimpel, maar kan iemand mij vertellen hoe je waardes vanuit verschillende views kan benaderen? Voorbeeld: ik heb een rootViewController die een instantie ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Zoeken Berichten van vandaag Markeer forums als gelezen

Reageren

 

Discussietools Weergave
  #1  
Oud 3 April 2009, 09:02
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 31 May 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard Uitlezen 'variabelen' tussen 'views'

Wellicht is het supersimpel, maar kan iemand mij vertellen hoe je waardes vanuit verschillende views kan benaderen?

Voorbeeld: ik heb een rootViewController die een instantie van 'settingsViewController' initialiseert en een instantie van 'uitleesViewController' heeft. Nu wil ik de waarde, stel, een naam in een UITextField die ik in settingsViewController heb ingevoerd, uitlezen / tonen in bijvoorbeeld een UILabel in uitleesViewController.

De views kunnen elkaar uiteraard niet direct aanroepen omdat het instancies zijn die geinitieerd zijn vanuit mijn rootViewController, dus neem ik aan dat het via de rootViewController gaat..of sla ik de plank nu mis?

Op iphonedevsdk ben ik wel soortgelijke vragen ook tegengekomen, maar daar kwam ik niet echt mee weg.

Alvast bedankt voor diegenen die mij mijn 'oh ja, doh! dat ik zo stom ben dat ik dat niet zie!' moment geeft.

EDIT: Na gisteravond gespeeld te hebben blijkt, als ik het goed heb, te gaan middels een UIApplication-class die je in je views include, en instantieert via UIApplication *mijnDelegates = [[UIApplication sharedApplication] mijnDelegates];

Hierin definieer je dan je 'globale variabelen' zodat elke view middels deze 'delegate' ze kan benaderen.

Laatst gewijzigd door Malork; 3 April 2009 om 09:13.
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 3 April 2009, 10:50
ideveloper's schermafbeelding
» iPhone 4S 64GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi +4G 64GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 2 April 2008
Locatie: Bodegraven
Berichten: 339
Send a message via twitter to ideveloper
Standaard

Zo kun je het oplossen idd. Je kunt ook zorgen dat je uitleesViewController van de settingsViewControler weet. Dus je kunt bijvoorbeeld in de settingsViewController een attribuut uitleesViewController geven en deze tijdens het initialiseren zetten. Dan kun je altijd bij je uitleesViewController vanuit je settingsViewController zonder dat je dit via de sharedApplication hoeft te doen.
  #3  
Oud 3 April 2009, 10:58
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 31 May 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

toch? ik dacht dat dat niet ging omdat beide Controllers vanuit de rootController geinstantieerd werden. Volgens mij had ik dat ook al eens geprobeerd maar werkte het niet omdat bijvoorbeeld uitleesViewController een nieuwe instance maakte van settingsViewController; dan heb ik dus blijkbaar iets verkeerd gedaan...
  #4  
Oud 3 April 2009, 11:53
sossienl's schermafbeelding
iPhone(club) Guru
» iPhone 6 Plus 64GB (Space Grijs) [FW: 8.0]  [Jailbreak: Nee]
» iPad 4 Wi-Fi 16GB (Wit) [FW: 8.0]  [Jailbreak: Ja]
» Mac OS X
 
Geregistreerd: 23 September 2007
Locatie: Blaricum
Berichten: 601
Standaard

Ik doe het als volgt:

- Mijn eerste view is een Table View, onder function tableView didSelectRowAtIndexPath

DetailerViewController *dvController = [[DetailerViewController alloc] initWithNibName:@"DetailerView" bundle:[NSBundle mainBundle]];
dvController.selectedCountry = storyLink;
dvController.selectedHalte = storyHalte;
dvController.selectedPostal = storyPostal;
dvController.selectedPrepre = storyPrePre;

[self.navigationController pushViewControllervController animated:YES];
[dvController release];
dvController = nil;



In mijn tweede View het volgende;

@synthesize selectedCountry;
@synthesize selectedHalte;
@synthesize selectedPostal;
@synthesize selectedPrepre;


Tevens declare ik ze in de header file

Geen idee of dit hierboven al beknopt benoemd was, just my 2 cents.
__________________
iPhone (web) developer. Kijk op http://www.appsstore.nl voor alle Nederlandse iPhone apps! Twitter? klik!
  #5  
Oud 3 April 2009, 12:46
» iPhone 3GS 32GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 16GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 21 August 2008
Locatie: Antwerpen
Berichten: 89
Standaard

Kijk anders ook eens naar "key-value observing". Je registreert je dan zogezegd voor notificaties die gestuurd worden als die bapaalde variabele wijzigt, zo verklein je ook de interface tussen beide controllers.
  #6  
Oud 3 April 2009, 13:56
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 31 May 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

Werkt key value observing ook op de iPhone dan? Dat zou interessant zijn (dacht dat dit alleen met Mac OSX werkte).

In ieder geval iedereen bedankt; ik weet nu dat ik niet helemaal verkeerd zat en dat er verschillende methodes zijn (en Sossie, bedankt voor je voorbeeld!). Dat worden weer late dagen dit weekend!

Laatst gewijzigd door Malork; 3 April 2009 om 14:03.
  #7  
Oud 3 April 2009, 14:29
Thaurin's schermafbeelding
» iPhone 3G 8GB [FW: 2.1]
» Windows
 
Geregistreerd: 4 September 2008
Berichten: 141
Standaard

Ik ben nog niet met multiple views aan de slag geweest, maar kun je niet gewoon een connectie leggen tussen rootViewController en settingsViewController, deze #import'en in settingsViewController en zo een outlet in rootViewController benaderen?
  #8  
Oud 3 April 2009, 15:18
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 31 May 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

nou, je hebt eigenlijk 3 viewcontrollers: een rootViewController, een settingsViewController en een uitleesViewController. rootVC instantieert de andere 2 controllers en regels het switchen tussen deze 2 views.
Als je dus settingsViewController in uitleescontroller import en instantieert, maak je dus een nieuwe instance (object) met zijn eigen runtime-variabelen, dus dat werkt niet (althans, in PHP niet...).
Daarom zei ik al: misschien is het heel eenvoudig en zie ik iets over het hoofd, want in eerste instantie had ik jouw idee ook in gedachte, maar dat werkt (als je nadenkt over de basis OOP) niet, maargoed, Objective-C heeft me wel vaker verrast.
  #9  
Oud 3 April 2009, 15:22
Thaurin's schermafbeelding
» iPhone 3G 8GB [FW: 2.1]
» Windows
 
Geregistreerd: 4 September 2008
Berichten: 141
Standaard

Kan settingsViewController de instance van rootViewController dan niet benaderen? In dat geval kan settingsViewController toch gewoon [rootViewController uitleesViewController] lezen via een outlet?

Ik refereer aan de switching views video tutorial.

Laatst gewijzigd door Thaurin; 3 April 2009 om 15:26.
  #10  
Oud 3 April 2009, 15:34
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 31 May 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

Citaat:
Oorspronkelijk geplaatst door Thaurin Bekijk bericht
Kan settingsViewController de instance van rootViewController dan niet benaderen? In dat geval kan settingsViewController toch gewoon [rootViewController uitleesViewController] lezen via een outlet?
Oh zo bedoel je; ja daar had ik ook snel aan gedacht maar niet geprobeerd; je bedoelt dus een UIApplication in de uitleesViewController XIB plaatsen en dan zo koppelen. Theoretisch maakt ie dan ook weer een aparte instance aan van rootViewController, toch?

Met dat sharedApplication komt het nagenoeg in de buurt wat jij bedoelt maar dat is programmatig.
  #11  
Oud 3 April 2009, 15:49
Thaurin's schermafbeelding
» iPhone 3G 8GB [FW: 2.1]
» Windows
 
Geregistreerd: 4 September 2008
Berichten: 141
Standaard

Als settingsViewController en uitleesViewController in dezelfde xib staan, en hun views worden geplaatst op de view van rootViewController, kun je in IB toch gewoon outlets tussen de verschillende view controllers maken? En aangezien rootViewController instanties van settingsViewController en uitleesViewController bevat, kun je hier toch gewoon outlets voor maken? Zodat je een connectie kunt maken in IB tussen rootViewController en settingsViewController? En dan dus uitleesViewController kan benaderen in settingsViewController?

Een hoop vragen, maar misschien is de structuur van jouw applicatie compleet anders of heb ik het helemaal fout.
  #12  
Oud 3 April 2009, 16:02
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 31 May 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

Oef mijn hoofd duizelt ervan maar alle views zijn aparte XIB-files. Dat idee had ik ook zo'n beetje inderdaad, echter als je straks een applicatie hebt met misschien wel 10 views, dan krijg je een wirwar, lijkt me, maar het is zeker het proberen waard en zou best wel eens ergens van toepassing kunnen zijn.

Ik bedoelde eigenlijk met mijn OP meer iets wat vergelijkbaar is met bijvoorbeeld globals of sessievariabelen in PHP, die 'zweven' en zijn door elke class te benaderen.

mijn hoofd duizelt ervan

Laatst gewijzigd door Malork; 3 April 2009 om 16:07.
  #13  
Oud 3 April 2009, 16:19
Thaurin's schermafbeelding
» iPhone 3G 8GB [FW: 2.1]
» Windows
 
Geregistreerd: 4 September 2008
Berichten: 141
Standaard

Aha, de video die ik linkte maakt dus geen aparte XIB voor iedere view. Hij zegt dat hij dit voor kleinere apps fijner vindt, maar grotere apps werken efficienter met aparte XIBs, aldus de goede man.

Ik ga hier thuis even mee puzzelen.
  #14  
Oud 3 April 2009, 16:33
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 31 May 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

Oh de video had die je postte had ik niet gezien (de link) via de iPhone; nu wel. zeker interessant om eens naar te kijken.

op iPhonedevSDK staat ook een mooie video, met daaronder een link naar een HQ-versie, maar die is er niet meer en de kwaliteit is te belabberd om er iets uit te halen. Ik zal eens vragen daar of deze video gerepost kan worden.
  #15  
Oud 3 April 2009, 16:50
» iPhone 3GS 32GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 16GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 21 August 2008
Locatie: Antwerpen
Berichten: 89
Standaard

Citaat:
Oorspronkelijk geplaatst door Malork Bekijk bericht
Werkt key value observing ook op de iPhone dan? Dat zou interessant zijn (dacht dat dit alleen met Mac OSX werkte).
Werkt perfect.
  #16  
Oud 3 April 2009, 17:27
Thaurin's schermafbeelding
» iPhone 3G 8GB [FW: 2.1]
» Windows
 
Geregistreerd: 4 September 2008
Berichten: 141
Standaard

Citaat:
Oorspronkelijk geplaatst door Malork Bekijk bericht
Ik zal eens vragen daar of deze video gerepost kan worden.
Dank, ik denk dat deze zaken er niet goed genoeg in kunnen zitten. Dus van zo veel mogelijk kanten met wellicht verschillende perspectieven kan alleen maar goed zijn.

Wat betreft key-value observing, ik heb dat eens een keer gezien in een keynote. Zo kun je een control koppelen aan een ander object, en als de waarde (bijvoorbeeld een slider) veranderd, veranderd een waarde in het object automatisch mee. Weinig code, snel in elkaar gezet. Klinkt erg leuk, alhoewel er mensen zijn die zweren dat we zo snel mogelijk van Interface Builder af moeten en zo veel mogelijk in code moeten doen.
  #17  
Oud 3 April 2009, 17:56
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 31 May 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

Citaat:
Oorspronkelijk geplaatst door Thaurin Bekijk bericht
Dank, ik denk dat deze zaken er niet goed genoeg in kunnen zitten. Dus van zo veel mogelijk kanten met wellicht verschillende perspectieven kan alleen maar goed zijn.

Wat betreft key-value observing, ik heb dat eens een keer gezien in een keynote. Zo kun je een control koppelen aan een ander object, en als de waarde (bijvoorbeeld een slider) veranderd, veranderd een waarde in het object automatisch mee. Weinig code, snel in elkaar gezet. Klinkt erg leuk, alhoewel er mensen zijn die zweren dat we zo snel mogelijk van Interface Builder af moeten en zo veel mogelijk in code moeten doen.
Ja met KVO had ik al eens gespeeld op Mac, was erg 'grappig' om te doen; ben benieuwd hoe het op de iPhone gaat.

de link naar dat wat ik bedoelde op iphonedevsdk is Multiple XIB how-to - iPhone Dev SDK Forum de HD-versie doet het nu wel weer blijkbaar, maar moet je een vimeo-account hebben. de in-post movie is slecht, maar daaronder staat een link naar een wel goed zichtbaar bestand: iPhone Tutorial - Multiple XIB files on Vimeo

...al met al weer genoeg om te lezen / zien / doen, en dit is nog maar n aspect van wat ik allemaal wel niet zou willen weten. Ik moet mezelf maar weer eens gaan afremmen geloof ik
  #18  
Oud 3 April 2009, 18:11
Thaurin's schermafbeelding
» iPhone 3G 8GB [FW: 2.1]
» Windows
 
Geregistreerd: 4 September 2008
Berichten: 141
Standaard

Bedankt, gelijk effe kijken. Ik ga het uitproberen en kom erop terug. De HD versie deed het trouwens gewoon zonder account.

Ik denk dat het op een gegeven moment ineens zal afremmen, zodra bepaalde zaken gaan overlappen en alles zo'n beetje op z'n plaats valt. Dit uiteraard pas na eerst zelf veel te hebben gexpirimenteerd.

Laatst gewijzigd door Thaurin; 3 April 2009 om 18:50.
  #19  
Oud 3 April 2009, 20:15
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 31 May 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

Het is me net op de manier gelukt zoals iDeveloper al beschreef; eigenlijk logisch want in PHP (sorry voor als ik het steeds vergelijk...) doe je het ook zo.

Wat doe ik:

ik heb:
- een rootViewController
- een settingsViewController
- een uitleesViewController

in de uitleesViewController staat in de .h file:

@class settingsViewController

met vervolgens een declaratie:
settingsViewController *settingsVC;

@property (nonatomic, retain) settingsViewController * settingsVC

in de .m-file synthesize ik settingsVC en #import ik de settingsViewController.h
deze uitleesVC synthesize ik ook in de .m-file uiteraard.

tijdens starten van de applicatie laad rootViewController de settingsViewController en toont deze.
Op dit moment kun je dus in settingsViewController je settings doen.
Wanneer ik op een button druk (die verbonden is met een IBOutlet in rootViewController) wordt mijn uitleesViewController geladen. Nadat ik deze heb geinstantieerd passeer ik de pointer die rootViewController heeft voor de settingsViewController naar de uitleesViewController's settingsVC met:

[uitleesVC setSettingsVC:self.settingsVC];

Ik hoop dat het een beetje duidelijk was; gelukkig zijn er dus diverse manieren om gegevens uit te lezen uit andere controllers.
  #20  
Oud 3 April 2009, 21:04
Thaurin's schermafbeelding
» iPhone 3G 8GB [FW: 2.1]
» Windows
 
Geregistreerd: 4 September 2008
Berichten: 141
Standaard

Aha, dus zodra rootViewController de message krijgt om de views te switchen, geef je gelijk settingsViewController door aan die nieuwe view (uitleesViewController). Ik moet het zelf even proberen om het te solidificeren (in het Engels klinkt dat woord beter :/), maar ik snap de bedoeling.
Reageren


Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)

 
Discussietools
Weergave

Soortgelijke discussies

Discussie Auteur Forum Reacties Laatste bericht
NSURLConnection webpagina uitlezen bluecola Ontwikkelen voor iOS 2 2 May 2011 15:07
bluetooth telefoonboek uitlezen damnet iPhone accessoires en onderdelen 0 27 October 2009 19:23
meerdere views in landscape Tim14ww Ontwikkelen voor iOS 0 16 October 2009 23:47
Views... JWVD Ontwikkelen voor iOS 4 28 November 2008 13:20
Tab bar, meerdere views BadSide Ontwikkelen voor iOS 1 22 September 2008 04:35

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 22:12.