2017-03-16 1 views
1

J'ai un fichier texte de mots et je le fais pour lire dans mon projet son amende, maintenant je veux diviser les chaînes de mots en deux et montrer au hasard sur plusieurs étiquettes que je fais sur ma vue.Comment afficher des mots aléatoires d'un fichier texte sur plusieurs étiquettes dans l'objectif c

NSString *myfilePath = [[NSBundle mainBundle] pathForResource:@"textFile" ofType:@"txt"]; 

NSString *linesFromFile = [[NSString alloc] initWithContentsOfFile:myfilePath encoding:NSUTF8StringEncoding error:nil]; 

myWords = [NSArray alloc]; 
myWords = [linesFromFile componentsSeparatedByString:@"\n"]; 

NSLog(@"%@", myWords); 

Je fais 5 étiquettes comment puis-je faire scinder les mots de mon fichier texte et apparaître au hasard sur ces cinq étiquettes?

+0

Est-ce que le texte sur l'étiquette changera par période de temps? Sinon, comment pouvez-vous montrer tous vos textes dans votre fichier texte. – aircraft

+0

oui il devrait changer aléatoirement ..... – Sipa

+0

deux étiquettes ou plus peuvent-elles afficher le même texte en même temps? – aircraft

Répondre

1

AS -Sergey recommande la moitié de mon problème résolu je suis capable de montrer une chaîne de mots de fichier texte sur l'étiquette. supprimer ces étiquettes [i] .text à partir du code et appelez

NSMutableArray<UILabel*>* labels = [NSMutableArray array]; 
NSMutableArray *words = [myWords mutableCopy]; 
for (int i = 0; i<5; i++) { 
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(30, 70*i, 100, 40)]; 
    label.textColor = [UIColor whiteColor]; 
    //whatever other properties 

    NSInteger index = arc4random()%words.count; 
    label.text = words[index]; 
    [words removeObjectAtIndex:index]; 


    [self.view addSubview:label]; 
    [labels addObject: label]; 


} 

Cela montre une chaîne complète de mot maintenant je veux diviser une chaîne de mot en deux parties, par exemple si j'ai un mot d'Apple devrait être divisé en comme App et le et le montrer au hasard sur différentes étiquettes toute aide appréciée.

1

Vous pouvez essayer d'utiliser cette

NSMutableArray *words = [myWords mutableCopy]; 
    for (int i = 0; i<5 ;i++) 
    { 
    NSInteger index = arc4random()%words.count; 
    labels[i].text = words[index]; 
    [words removeObjectAtIndex:index]; 
    } 
+0

quelle sera la méthode pour lire les éléments du tableau pour l'objet UILabel? – Sipa

+0

Que voulez-vous dire? Vous dites que vous avez déjà 5 étiquettes, donc vous devez créer un tableau avec ces étiquettes, quelque chose comme ceci: 'NSArray * labels = @ [étiquette1, étiquette2, label3, label4, label5];' – Sergey

+0

oh j'ai créé des étiquettes avec boucle pour (int i = 1; i <5; i ++) {UILabel * label = [[UILabel alloc] initWithFrame: CGRectMake (30, 70 * i, 100, 40)]; label.textColor = [UIColor whiteColor]; label.backgroundColor = [UIColor greenColor]; } – Sipa