2013-11-15 42 views
-3

我知道这个问题被问了很多次,但我没有找到任何解决方案,我的问题。我宣布计数器为0,在viewDidLoad中,下一个和上一个操作

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    counter = 0; 
    [stgImage1 setImage:[UIImage imageNamed:[imageStr objectAtIndex:counter]]]; 
} 

这是我的下一个和以前的行动,

-(void)btnClicked:(UIButton*)btn{ 
    if (btn.tag==1) { 
    if (counter < [textStr count]-1) { 
     counter++; 
     NSLog(@"%i", counter); 
     [stgImage1 setImage:[UIImage imageNamed:[imageStr objectAtIndex:counter]]]; 
    } 
    if(counter > [textStr count]) { 
     counter = 0; //to loop continuously 
    } 

    } 
    else{ 
    if (counter>0) { 
     counter--; 
     NSLog(@"%i", counter); 
     [stgImage1 setImage:[UIImage imageNamed:[imageStr objectAtIndex:counter]]]; 
    } 
    } 

问题:这部分是不是在我的情况,即工作,这里没有连续的循环发生

if(counter > [textStr count]) { 
     counter = 0; //to loop continuously 
} 

请帮帮我!

+0

使用while循环而不是if循环。 – Smita

+0

你的循环在哪里你只写条件请把它作为while或别的东西第二个错字错误counterA不等于计数器 – Spynet

+0

你正在使用错误的逻辑。你正在检查是否(counter> [textStr count]),如果条件为真,那么你再次设置计数器= 0.所以第二个时间条件是错误的,循环不会连续执行。 – Smita

回答

0

问题是你正在从< [textStr count]-1跳到> [textStr count]而不是评估等于。你也只是在第一个for循环中增加你的计数器,所以它不会增加你的第二个if语句。

-(void)btnClicked:(UIButton*)btn{ 
    if (btn.tag==1) { 

    NSLog(@"next clicked"); 
    NSLog(@"image array count: %i", [imageStr count]); 
    counter++; 
    if (counter == [textStr count]) counter = 0; 
    NSLog(@"counter: %i", counter); 
    [stgImage1 setImage:[UIImage imageNamed:[imageStr objectAtIndex:counter]]]; 

    } 
    else{ 

    NSLog(@"previous clicked"); 
    if (counter>0) { 
     counter--; 
     NSLog(@"%i", counter); 
     [stgImage1 setImage:[UIImage imageNamed:[imageStr objectAtIndex:counter]]]; 
    } 
    } 
} 
+0

如果(计数器== [textStr计数])不工作,我也尝试如果(计数器== [textStr计数] -1),取代最后的图像 – Sharma

+0

我编辑和简化了你的逻辑。 – Joel

+0

我试过但没有工作 – Sharma

0
9月30日

我给你的答案(对于那些谁可以看到已删除的帖子:https://stackoverflow.com/questions/19087078/i-want-correct-format-of-this-code)作为要点:https://gist.github.com/vikingosegundo/6814617

必须确保,两个数组有相同的大小和索引在任何时候都有效。此外,如果使用一些聪明的C代码作为三元运算符和模运算符,则可以大幅缩减代码。

-(void)btnClicked:(UIButton*)button 
{ 
    NSAssert([imageStr count] == [txtStr count], @"both arrays need to have the same number of items"); 
    idx += (button == self.nextButton) ? 1 : -1; // if nextButton increment, else decrement 
    idx = idx % [textStr count]; // modolo, will keep idx between 0 and count-1 

    [stgImage1 setImage:[UIImage imageNamed: imageStr[idx]]]; 
    stgText1.text= [NSString stringWithFormat:@"%@", textStr[idx]]]; 
} 
相关问题