2017-06-27 8 views
2

J'ai mis en place un code dans lequel Viewcontroller *vc est déclaré globalement dans Appdelegate.mm et vc est initialisé à rootviewcontroller. Lorsque j'appelle une méthode de Viewcontroller qui modifie le UILabel, il commence à écraser le texte précédent après 3-4 changements.Ecrasement UILabel par-dessus la valeur précédente

//AppDelegate.mm 

@implementation AppDelegate 

ViewController *vc; 

- (void)feedSamplesToEngine:(UInt32)audioDataBytesCapacity audioData:(void *)audioData { 
    if(check>0 || check==-1) 
    { 
     [vc writetolabel:check]; 
    } 
} 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    vc = (ViewController *)self.window.rootViewController; 
} 

..

//ViewcONTROLLER.m 

@interface ViewController() 
{ AVAudioSession *session; 
} 

@end 

@implementation ViewController 

@synthesize appDelegate; //global declaration bitches 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    appDelegate = (AudioRecorderAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    [email protected]"OTP"; 
    [appDelegate startRecording]; 

} 

- (void)writetolabel:(int) check{ 
    self.TextView.text=nil; 

    if(check==-1) 
     self.TextView.text= [NSString stringWithFormat:@"OTP not verified"]; 
    else 
     self.TextView.text= [NSString stringWithFormat:@"%d", check]; 

} 


- (void)dealloc { 
    [UITextView release]; 
    [super dealloc]; 
} 
@end 

J'ai essayé la recherche de la même chose, mais aucune des réponses a résolu mon problème. Les valeurs changent régulièrement, le problème n'est pas lié à la valeur transmise mais au fait qu'elles sont écrasées les unes après les autres après les trois premières valeurs.

Répondre

0

changement au lieu de

self.TextView.text = nil 

à

self.TextView.text=" " 
+1

Non, le même problème est toujours en cours. Mon analyse du problème me fait sentir qu'un nouveau pointeur vers la classe ViewController est initialisé à chaque fois (même si c'est global) et que la méthode est appelée. –

+0

Attribuez un arrière-plan à textView chaque fois que vous affectez une valeur à textView. De cette façon, vous pouvez vérifier votre point. – Kumar

+0

Ajouté, self.TextView.backgroundColor = [UIColor whiteColor]; cela fonctionne, merci :) Bien que ce serait génial si je savais pourquoi ça se passe exactement. –