2017-02-08 13 views
0

これを解決するために助けてください。 実際には配列の配列があります。 私はこれらの配列をパラメータとして別のメソッドに渡します。これらの文字列はラベルに印刷されます。 問題はラベル内の配列の最後のインデックスを取得するだけです。 何をする必要がありますかラベルのインデックス文字列?メソッドに文字列を渡しても、ラベルテキスト内のすべての文字列は更新されません

-(void)method{ 
     NSArray *array=[NSArray arrayWithObjects:@"one",@"two",@"three",@"four",@"five",@"six",@"seven",@"eight",@"nine",@"ten", nil]; 
     for(int i=0;i<10;i++){ 

     NSString *temp=[NSString stringWithFormat:@"%@",array[i]]; 
     [self setTextForLoader:temp]; 


    } 
    } 
+(void)setTextForLoader:(NSString*)loaderStr{ 

    NSLog(@"loaderStr-->%@",loaderStr); 

    [activityViewLabel setText:@""]; 

    NSString *str = [NSString stringWithFormat:@"%@ %@",@"Syncing",loaderStr]; 

    [activityViewLabel setText:str]; 
    Sleep(1); 

} 
+0

すべての配列値を1つのラベルまたは別のラベルに表示しますか? –

+0

@ YatishAgrawal in single Label –

+0

NSString * str = [NSString stringWithFormat:@ "%@%@"%@、@ "Syncing"、activityViewLabel.text、loaderStr] ;.実際に何が起こったのか、ラベルテキストは反復処理中に別の配列値に置き換えられ、最後のインデックス値がラベルに格納されます。 –

答えて

0

このようにコードを変更します。問題は、mainスレッドでsleepメソッドを呼び出すことです。

あなたのメソッドを呼び出す場合。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     //Do background work 
     [self method]; 
}); 

setTextForLoaderのような方法です。

-(void)setTextForLoader:(NSString*)loaderStr{ 

    NSLog(@"loaderStr-->%@",loaderStr); 

    [_labelTimer setText:@""]; 

    NSString *str = [NSString stringWithFormat:@"%@ %@",@"Syncing",loaderStr]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [_labelTimer setText:str]; 
    }); 


    sleep(1); 

} 
+0

私のコンソールで正しいstrを取得していますが、私のラベルに変更はありません。 実際には、ラベル内の最後のインデックス文字列のみが表示されます。 –

+0

私のコードを試してみましたか? – Sunny

+0

はい私は、実際には、私はAPIから値を取得することですur code.Actuallyしようとしました。 APIからi配列に保存し、Forループのようになります '(NSDictionary * categoryDictionary in responseObject [@" XX "] [@" YY "])' –

関連する問題