//

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 Berichten van vandaag

Reageren

 

Discussietools Weergave
  #1  
Oud 02-04-11, 18:01
DJ14 DJ14 is offline
• iOS 7.1
• 4.3.5
• Besturingssysteem: Mac OS X
 
Geregistreerd: Feb 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 02-04-11, 20:20
Hollance Hollance is offline
• iOS 5.1.1
• 5.1.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Oct 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 02-04-11, 21:09
DJ14 DJ14 is offline
• iOS 7.1
• 4.3.5
• Besturingssysteem: Mac OS X
 
Geregistreerd: Feb 2010
Berichten: 121
Standaard

THANKS! Het werkt
  #4  
Oud 02-04-11, 22:19
Geno's schermafbeelding
Geno Geno is offline
• iOS 9.0 beta
• 8.4
• Besturingssysteem: Mac OS X
 
Geregistreerd: Nov 2009
Berichten: 251
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 04-04-11, 20:02
nop nop is offline
• iOS 6.1.4
• 6.1.3
• Besturingssysteem: Mac OS X
 
Geregistreerd: Nov 2008
Locatie: Valkenburg
Berichten: 46
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; 04-04-11 om 20:05.
  #6  
Oud 05-04-11, 11:28
wubbe wubbe is offline
• iOS 5.0
• 5.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Oct 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-04-11 om 14:46.
Reageren



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

 

Soortgelijke discussies

Discussie Auteur Forum Reacties Laatste bericht
Films uit iTunes halen Bossie14 iTunes 4 08-03-12 20:37
Contacten uit reservekopie halen Schepe iPhone algemeen 4 28-03-10 23:13
UILabel updaten vanuit andere class Niels2678 Ontwikkelen voor iOS 18 05-10-09 12:42
iphone 3G uit usa halen? stultus Archief 14 13-07-08 12:27
Iphone uit de VS halen Thomas1990 Archief 3 20-02-08 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 19:22.