2011-04-28 55 views
0

Hai all, 在我的iPhone應用程序中,想要在UILabel中逐一打印一系列字符串,但只有最後一個字符串正在顯示。 我試過NSTIMER,但它不起作用。 誰能幫助me.thanks提前在UILabel中打印字母

這裏是我的代碼:

//changing strings to char 
    char *cname1=[n1 cStringUsingEncoding:NSASCIIStringEncoding]; 
    char *cname2=[n2 cStringUsingEncoding:NSASCIIStringEncoding]; 


    for (int i = 0; i < [n1 length]; i++) 
     { 
      for (int j = 0; j < [n2 length]; j++){ 
      if ((cname1[i]==cname2[j])) 
      { 

       cname1[i]='*'; 
       cname2[j]='*'; 

       myString1 = [NSString stringWithFormat:@"%s", cname1]; 

       myString2 = [NSString stringWithFormat:@"%s", cname2]; 

       [self printlabel]; 
       break; 
      } 


    } 

    -(void)printlabel{ 
     nam1.text = myString1; //set label1 
     nam2.text = myString2; //set label2 

     } 
+0

你可以發表你的相關的代碼? – Jamie 2011-04-28 05:27:57

+0

我想你忘了放一些代碼。 – Gypsa 2011-04-28 05:28:52

回答

0

讓我們假設,你有。

NSMutableArray* myAllLabel ; 
int labelIndex = 0; 

使用下面的代碼作爲參考。

- (void) startDisplayingLabel { 
    labelIndex = 0; 
    [NSTimer scheduledTimerWithInterval:2.0f target:self selector:@selector(showElapsedTime:) userInfo:nil repeats:YES]; 
} 

showElapsedTime將在您提供2.0秒延遲後調用。

-(void) showElapsedTime: (NSTimer *) timer { 

    if(labelIndex == 10) 
    { 
     [timer invalidate]; 
    } 
    else 
    { 
     //Now you have your mylabel , you could add it to the superview 
     UILabel* mylabel = (UILabel*)[myAllLabel objectAtIndex:labelIndex]; 
     // Write your code here 

    } 
    labelIndex++; 
} 

調用startDisplayingLabel一次,我會在2.0秒後顯示每個UILabel。

+0

非常感謝。幫助... – viru 2011-04-30 04:30:07

0

可能NSThread將幫助您

試着改變你的代碼,

for (int i = 0; i < [n1 length]; i++) 
     { 
      for (int j = 0; j < [n2 length]; j++){ 
      if ((cname1[i]==cname2[j])) 
      { 

       cname1[i]='*'; 
       cname2[j]='*'; 

       myString1 = [NSString stringWithFormat:@"%s", cname1]; 

       myString2 = [NSString stringWithFormat:@"%s", cname2]; 

       [self printlabel]; 
       break; 
      } 
     [NSThread sleepForTimeInterval:2.0];//sleeps for 2 seconds. 
    }