Verbinding tussen 2 viewcontrollers

Verbinding tussen 2 viewcontrollers discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Ik ben bezig met een utility app. Ik gebruik de FlipSideView template met een MainViewController en een FlipSideViewController. De FlipSideView is de settings view van ...



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
  #1  
Oud 22 March 2010, 15:00
Geno's schermafbeelding
» iPhone 6 128GB (Goud) [FW: 9.0 beta]  [Jailbreak: Nee]
» iPad Air Wi-Fi 32GB (Zilver) [FW: 8.4]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 4 November 2009
Berichten: 251
Send a message via twitter to Geno
Standaard Verbinding tussen 2 viewcontrollers

Ik ben bezig met een utility app. Ik gebruik de FlipSideView template met een MainViewController en een FlipSideViewController.

De FlipSideView is de settings view van mijn applicatie. Ik gebruik hiervoor een UISegmentedControl om te switchen tussen 2 instellingen. De bedoeling is dat een label in de MainViewController 2 verschillende type waardes laat zien, afhankelijk van wat de gebruiker heeft gekozen met de SegmentedController.

Nu is mijn vraag, hoe krijg ik zover dat de SegmentedController in de FlipSideView invloed kan uitoefenen in de MainView?
Waar zet ik de objecten, in welke class? Ik declareer de outlets in FlipSideViewController.h. Ik neem aan dat ik dan in de MainViewController.m de FlipSideViewController.h importeer. Moet ik in de *.m class ook de code zetten van de SegmentedController (dus dat die waardes veranderen in de label)?

Eigenlijk kan ik ook een algemene vraag stellen. Hoe zorg je er eigenlijk voor dat objecten en IBOutlets van de ene view in de andere view werken? De compiler herkent de outlets niet.
__________________
iPod touch v3 - iPod Nano 2011 - iMac 27" - iPhone 4S - iPad 2 - MacBook Air 11,6"
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 22 March 2010, 15:41
» iPhone 4S 32GB (Wit) [FW: 5.0.1]  [Jailbreak: Ja]
» iPad 2 Wi-Fi 32GB (Wit) [FW: 5.0.1]  [Jailbreak: Ja]
» Linux
 
Geregistreerd: 5 January 2010
Locatie: Sluis, Zeeland
Berichten: 12
Send a message via twitter to Coppes
Standaard

Momenteel kan ik niet direct sample code aan je geven maar dit kan je wel mogelijk maken door de Delegate van de flipsideviewcontroller af te leggen bij je mainviewcontroller, op deze manier kan je een functie oproepen in je mainviewcontroller die de waarde's invoerd.
  #3  
Oud 22 March 2010, 17:55
» iPod touch 8GB (v2) [FW: 4.2.1]  [Jailbreak: Ja]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 21 September 2008
Berichten: 379
Standaard

Wat Coppes zegt kan inderdaad, maar er is een betere en makkelijkere manier. Je zegt dat op "de achterkant" de instellingen staan. Die moeten toch ook bewaard worden als je de applicatie afsluit? De manier die Coppes doet, doet dat niet, maar je kan dat wel op de volgende manier doen.

Je leest de waardes op "de achterkant" uit wanneer ze veranderen, en wanneer dat gebeurd bewaar je het. Je bewaart het d.m.v. NSUserDefaults (zoek daar maar eens op in Google of op de Apple site). Telkens wanneer de voorkant tevoorschijn komt (implementeer: ViewWillAppear) lees je die waarde dan uit.

Dit is (vind ik) makkelijker, maar ook beter, omdat de waarde bewaard blijft.
  #4  
Oud 22 March 2010, 20:25
Geno's schermafbeelding
» iPhone 6 128GB (Goud) [FW: 9.0 beta]  [Jailbreak: Nee]
» iPad Air Wi-Fi 32GB (Zilver) [FW: 8.4]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 4 November 2009
Berichten: 251
Send a message via twitter to Geno
Standaard

Bedankt voor de reacties.

Ik heb al wat code geschreven dat de instellingen bewaard worden via NSUserDefaults. Dat gaat prima.

Enige wat ik nog niet weet is hoe ik ervoor kan zorgen dat de instellingen worden doorgegeven aan 'de voorkant'. Wat me zelfs niet lukt is om bv. een button, die aan 'de achterkant' zit, iets te laten doen op 'de voorkant'.
Ik ga even kijken naar jullie ideen.
  #5  
Oud 23 March 2010, 08:45
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Wat Frog bedoelt is dat je de instellingen aan de 'achterkant' in NSUserDefaults zet en ze aan de 'voorkant' weer ophaalt.

Maar... er is nog een manier.

Je kunt ook flipsideControllerDidFinish in de MainViewController implementeren. Die gaat af als je weer van de 'achterkant' naar de 'voorkant' gaat. Hier kun je waarden van de ene naar de andere kopiren.

Voorbeeld:
Code:
- (void)flipsideViewControllerDidFinish: (FlipsideViewController *)controller {
    [self dismissModalViewControllerAnimated:YES];	
    propertyAanDeVoorkant = [controller propertyAanDeAchterkant];
}
En die property aan de achterkant kan gewoon een UISegmentedControl zijn natuurlijk
__________________
Leon
[iPhone- en Java ontwikkelaar]

Laatst gewijzigd door wubbe; 23 March 2010 om 09:43.
  #6  
Oud 25 March 2010, 04:11
Geno's schermafbeelding
» iPhone 6 128GB (Goud) [FW: 9.0 beta]  [Jailbreak: Nee]
» iPad Air Wi-Fi 32GB (Zilver) [FW: 8.4]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 4 November 2009
Berichten: 251
Send a message via twitter to Geno
Standaard

Bedankt voor jullie reacties. Het is gelukt. Ik gebruikte het idee van Frog om in de MainViewController de waarde (de integer van UISegmentedControl) uit de .plist te halen met NSUserDefaults.

Alleen werkte viewWillAppear niet. Er gebeurde niks. Dus gebruikte ik flipsideViewControllerDidFinish en daarmee werkte het prima.
  #7  
Oud 25 March 2010, 16:46
» iPod touch 8GB (v2) [FW: 4.2.1]  [Jailbreak: Ja]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 21 September 2008
Berichten: 379
Standaard

Ik denk toch dat je beter ViewWillAppear, omdat die ook wordt aangeroepen wanneer je de applicatie opent en niet alleen maar als je van de achterkant naar de voorkant gaat.

Heb je echt het volgende neergezet?
Code:
-(void)viewWillAppear:(BOOL)animated
Zo ja, dan zou ik even naar dit topic kijken, misschien lost dat het probleem op.
  #8  
Oud 25 March 2010, 16:50
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Heeft geen zin meer. Ik snap het al.

Laatst gewijzigd door wubbe; 25 March 2010 om 16:51. Reden: Ik snap het al ;)
  #9  
Oud 26 March 2010, 00:24
Geno's schermafbeelding
» iPhone 6 128GB (Goud) [FW: 9.0 beta]  [Jailbreak: Nee]
» iPad Air Wi-Fi 32GB (Zilver) [FW: 8.4]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 4 November 2009
Berichten: 251
Send a message via twitter to Geno
Standaard

Ja ik had dat zo neergezet en de compiler gaf ook geen error. In dat andere topic staan wel goede suggesties om het werkend te krijgen. Bedankt.

Om ook de instelling terug te halen als de applicatie wordt geopend, gebruik ik viewDidLoad.
  #10  
Oud 26 March 2010, 20:12
» iPod touch 8GB (v2) [FW: 4.2.1]  [Jailbreak: Ja]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 21 September 2008
Berichten: 379
Standaard

Dat werkt idd ook, maar dan moet je je code wel op twee plaatsen neerzetten. Dat is bij ViewWillAppear niet meer nodig.
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
Bluetooth verbinding maken tussen Iphone/Ipad Harley4 iPad algemeen 21 4 April 2012 10:18
Geen verbinding tussen PC en 3Gs Thomas H. iPhone algemeen 0 21 June 2010 12:43
Windows: Help me geen usb verbinding tussen iphone en itunes ceylanbey iTunes 1 11 March 2010 21:58
Kan geen Bluetooth netwerk/verbinding maken tussen Powerbook en iPhone sheppy iPhone algemeen 5 26 October 2009 23:51
Verbinding tussen 2 iPhones ? birger Archief 0 29 August 2008 16:25

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 21:42.