iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Ontwikkelen voor iOS (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/)
-   -   strings voor meerdere subViews gebruiken? (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/41823-strings-voor-meerdere-subviews-gebruiken.html)

cygnusx 16-08-09 21:19

strings voor meerdere subViews gebruiken?
 
Ik ben sinds een korte tijd aan het 'programmeren' voor de iphone. Ik heb wat handleidingen e.d. gevolgd, en probeer door te programmeren meer te leren (door te zoeken, te proberen en zoals nu op forums te vragen naar antwoorden)

Ik ben bezig met een applicatie waarbij ik een homescherm heb en vanuit daar een keuze maak, dan naar een andere subview ga en dan weer een keuze maak, dan weer naar een nieuwe subview waar de gegevens verschijnen die ik gekozen heb.

De opties die ik kies defineer ik in een variabel. Deze variabel blijft echter in die view. Is het mogelijk om variabelen globaal te maken of op de een of andere manier weer te kunnen opvragen in een nieuwe view?

Heel erg bedankt alvast, kan er echt niet uit komen!:)

SkyTrix 17-08-09 09:24

Die variabele moet je doorgeven aan de nieuwe viewcontroller. In dit voorbeeld heeft mijn LoginViewController een property 'servers'. In mijn ServerViewController wil ik deze ook kunnen accessen.

Code:

ServerViewController *serverViewController = [[ServerViewController alloc] initWithNibName:@"ServerView" bundle:nil];
serverViewController.servers = servers; // Het gaat hierom
[self.navigationController pushViewController:serverViewController animated:YES];
[serverViewController release];

Dus zorg gewoon dat je in je nieuwe viewcontroller opnieuw de property set.

cygnusx 17-08-09 20:56

Eh, ja maar ik verander alleen maar van subview, de viewcontroller doe ik niks mee als het goed is toch?
Edit: Ik betwijfel of ik wel eens gebruik maak van een viewcontroller, of is dat onmogelijk?

cygnusx 17-08-09 21:24

zou je wellicht (als ik niet te veel vraag :P) een voorbeeldprojectje kunnen sturen waarin je een variabel over 2 views gebruikt?

Ik heb het idee dat ik een beetje op de verkeerde fundering aan het werk ben...

SkyTrix 17-08-09 21:25

Dat kan in feite maar dan ben je (naar mijn mening) niet goed bezig. UIView subclasses kunnen ook properties hebben. Deze kan je dan ook gewoon setten.

Edit:

Ik kijk er eens voor als ik tijd heb. Stuur nu vanaf iPhone en heb morgen niet veel tijd.

cygnusx 18-08-09 00:50

Ok, ik blijk dus toch wel een werkende viewcontroller te hebben. Na wat puzzelen, proberen, hulp met jouw stukje code en uiteindelijk goed linken enzo is het gelukt. Variabelen werken nu op meerdere views :)

Thanx.

Een probleempje echter, de situatie is als volgt. Ik druk op een knopje, in de action hiervan staat dat hij een variabel (in de viewcontroller dus) moet setten, en dan een nieuwe subview moet openen.

In die nieuwe subview heb ik een knopje die na drukken erop laat zien wat de waarde is van die gesette value. Dat werkt, alleen ik heb ook (als test) in de awakeFromNib neergezet dat hij de waarde moet laten zien. Daar gaat het niet goed, dus op dat moment is de waarde nog null.

Iemand een idee hoe dat kan?

cygnusx 18-08-09 02:07

Ok, ik blijk dus toch wel een werkende viewcontroller te hebben. Na wat puzzelen, proberen, hulp met jouw stukje code en uiteindelijk goed linken enzo is het gelukt. Variabelen werken nu op meerdere views :)

Thanx.

Een probleempje echter, ik wil ook graag een functie in een andere view kunnen benaderen.
ik gebruik [viewNaam functieNaam];
Hier krijg ik echter de fout"viewNaam may not respond to '+functieNaam'

Mis ik iets?

Dit is een stukje uit de betreffende view waar de functie gedeclareerd wordt: (de functie heet dus startIt)
viewNaam.h
Code:

- (void)startIt;
viewNaam.M
Code:

- (void)startIt {
    //dingen die er gedaan worden staan hier
}

Mis ik hier nog iets in? Krijg verder geen fouten o.i.d.

SkyTrix 18-08-09 08:54

Je hebt waarschijnlijk geen instance van die view(controller)? Als het een functie is die niet moet uitgevoerd worden op een het eigen object, zet je een + voor de void;

Code:

+ (void)startIt;

+ (void)startIt {
    //dingen die er gedaan worden staan hier
}

Zorg dat zeker de headerfile geïmport is.

Whacko 18-08-09 10:56

Eerst even een instantie maken van de class ja [[viewNaam alloc] init];

cygnusx 18-08-09 11:56

Ok, dat lijkt te werken met een + ipv een -.
Echter, nu krijg ik de melding "Warning: instance variable 'test' accessed in class method".
ik probeer daar dus een variabel te wijzigen.. dat kan dus nu niet meer.
moet ik dat nu anders aanroepen o.i.d.?

Whacko 18-08-09 12:38

Als je de + gebruikt, dan betekent dat dat de Method static is.
Dat wil zeggen dat je deze kunt aanroepen zonder dat je een instantie van je object nodig hebt. Echter wil je in je Method een property gebruiken, maar deze bestaat niet, want je hebt geen instantie van je object.
3 dingen die je kunt doen:

1. je property ook static maken
2. je method weer een instance method maken, en de class instantieren met de code die ik je eerder gaf.
3. eventjes de stanford Objective-C tutorials van itunes halen.

Mijn voorkeur gaat uit naar die laatste 2. :)


Alle tijden zijn GMT +2. Het is nu 07:36.