Variabele uit andere class halen

Variabele uit andere class halen discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Hallo, In Class 1 heb een tableview staan. In didSelectRowAtIndexPath: krijgt een NSString variabele (v1) een waarde, afhankelijk van welke table row geselecteerd is. Nadat ...



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 2 April 2011, 18:01
» iPhone 5s 32GB (Goud) [FW: 7.1]  [Jailbreak: Nee]
» iPad 2 Wi-Fi 16GB (Zwart) [FW: 4.3.5]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 6 February 2010
Berichten: 121
Standaard Variabele uit andere class halen

Hallo,

In Class 1 heb een tableview staan. In didSelectRowAtIndexPath: krijgt een NSString variabele (v1) een waarde, afhankelijk van welke table row geselecteerd is. Nadat v1 een waarde heeft gekregen, wordt er een nieuwe viewcontroller (uit Class 2) op het scherm gepresenteerd. Nu wil ik dat Class 2 variabele v1 uit class 1 haalt om er vervolgens iets mee te gaan doen. Hoe benader ik een variabele uit een andere class?

Class 1:

Code:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.section == 1){
		v1 = [[NSString alloc] init];
		v1 = [eenArray objectAtIndex:indexPath.row];
		[self.navigationController pushViewController:class2 animated:YES];
	}
}
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 2 April 2011, 20:20
» iPhone 4 32GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 32GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 4 October 2010
Locatie: Breda
Berichten: 68
Standaard

Je geeft die variabele mee aan class2:

Code:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.section == 1){
        v1 = [[NSString alloc] init];
        v1 = [eenArray objectAtIndex:indexPath.row];

        class2.v = v1;
        // of met een method: [class setV:v1];

        [self.navigationController pushViewController:class2 animated:YES];
    }
}
  #3  
Oud 2 April 2011, 21:09
» iPhone 5s 32GB (Goud) [FW: 7.1]  [Jailbreak: Nee]
» iPad 2 Wi-Fi 16GB (Zwart) [FW: 4.3.5]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 6 February 2010
Berichten: 121
Standaard

THANKS! Het werkt
  #4  
Oud 2 April 2011, 22:19
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

Tip: zou wel op je memory management letten.

In dit geval zou ik NSString *v1 = [eenArray objectAtIndex:indexPath.row]; doen, ipv alloc init gebruiken.

Of [v1 release]; nadat je je setter hebt gebruikt.
__________________
iPod touch v3 - iPod Nano 2011 - iMac 27" - iPhone 4S - iPad 2 - MacBook Air 11,6"
  #5  
Oud 4 April 2011, 20:02
nop nop is offline
» iPhone 5 16GB (Zwart) [FW: 6.1.4]  [Jailbreak: Nee]
» iPad mini Wi-Fi 16GB (Zwart) [FW: 6.1.3]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 8 November 2008
Locatie: Valkenburg
Berichten: 46
Send a message via twitter to nop
Standaard

Inderdaad, je kunt jezelf in de nesten werken wat betreft het geheugenmanagement.
Voor het uitwisselen van data op schermen gebruik ik altijd een singleton object. Dat kun je zien als een soort klasse met globale variabelen ('t is verpakt als singleton geen vies woord ), en is superhandig EN overzichtelijk.
__________________
iPhone/iPad ontwikkelaar http://www.ddq.nl

Laatst gewijzigd door nop; 4 April 2011 om 20:05.
  #6  
Oud 5 April 2011, 11:28
» 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

Als je wat verder zoekt is (bij verkeerd gebruik) een singleton wel een vies woord (ik vind toepassing van een singleton in dit voorbeeld verkeerd gebruik...).

Het voorbeeld van Hollance is (met een kleine wijziging) toch prima?
De regel:
Code:
v1 = [[NSString alloc] init];
is alleen volledig overbodig. Je gaat v1 2 keer een waarde geven. De tweede keer overschrijft de eerste keer. Buiten dat je een geheugen-lek introduceert is het nergens voor nodig. Daarnaast zou ik van v1 een lokale variabele maken binnen het if-block.

Dus:
Code:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.section == 1){
        NSString * v1 = [eenArray objectAtIndex:indexPath.row];
        [class2 setV:v1];
        [self.navigationController pushViewController:class2 animated:YES];
    }
}
__________________
Leon
[iPhone- en Java ontwikkelaar]

Laatst gewijzigd door wubbe; 12 April 2011 om 14:46.
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
Films uit iTunes halen Bossie14 iTunes 4 8 March 2012 20:37
Contacten uit reservekopie halen Schepe iPhone algemeen 4 28 March 2010 23:13
UILabel updaten vanuit andere class Niels2678 Ontwikkelen voor iOS 18 5 October 2009 12:42
iphone 3G uit usa halen? stultus Archief 14 13 July 2008 12:27
Iphone uit de VS halen Thomas1990 Archief 3 20 February 2008 21:14

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 13:06.