2012-10-16 88 views
2

我要顯示的UILabel。但NSMutableArray的數據獲取添加僅最後一個索引的文本。這裏是我的代碼顯示的NSMutableArray中的UILabel在Xcode

marray: 
(
{ 
ID=1; 
} 
{ 
ID="2" 
} 
) 

for(int i=0;i<[marray count];i++) 
    { 
     eventName=[[arr2 objectAtIndex:i]objectForKey:@"Code"]; 
     label.text=[NSString stringWithFormat:@"ID :%@",eventName ];   
    } 

我有文字顯示在這些的UILabel的ID :1

我該怎麼辦?

回答

0
Try the below Code. 
NSString *[email protected]""; 
for(int i=0;i<[marray count];i++) 
    { 

     //eventName=[[arr2 objectAtIndex:i]objectForKey:@"Code"]; 
     temp=[temp stringByAppendingString:[[arr2 objectAtIndex:i]objectForKey:@"Code"]]; 

     temp=[temp stringByAppendingString:@" ,"]; 
    } 
temp = [temp substringToIndex:[temp length]-1]; 
label.text=[NSString stringWithFormat:@"ID :%@",temp ]; 
+0

。我得到了它的部分工作。我想要這種格式1,2.ie每個項目後的空格和逗號 – 07405

+0

檢查我編輯的答案,如果有用的話,請接受它我點擊對號和向上箭頭 –

+0

謝謝,我得到了它。我有一個小問題,如果我有更多的Ids像3,4,5,6 ...那麼我無法在標籤中看到它。如果我想要顯示這樣的內容它不足以在第一行,那麼它應該顯示在下一行,等等....我該怎麼做呢?這是我做label = [[UILabel alloc] init]的標籤; [label setFrame:CGRectMake(20,175,330,60)]; label.textAlignment = UITextAlignmentLeft; label.backgroundColor = [UIColor clearColor]; – 07405

1

您正在運行一個for循環,它將繼續執行直到它的最後一個增量。所以會顯示數組中的最後一個值。所以你可以做的是,你可以添加一個定時器,而不是一個for循環,即如果你想在UILabel中顯示你的NSmutableArray變化。

編輯:

-(IBAction) rotate3 
{ 
    NSString *number = [self.dayArray description]; 
    NSArray *array = [[NSArray alloc] initWithObjects: @"0", @"1", @"2", @"3", @"4", @"5" ,@"6", @"7", @"8",@"9",@"10",@"11",@"12",@"13", @"14", @"15", @"16", @"17", @"18", @"19",nil]; 
    numberCount++; 
    timer=[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(rotate3)userInfo:nil repeats:YES];  
    self.dayArray = array; 
    [array release]; 

    label.text = [NSString stringWithFormat:@"Day %@ ", number]; 
} 

還要檢查這些鏈接How to update UILabel programmatically in iOSHow to display an NSArray in a UILabel and use timer

+0

但我希望所有標籤文本中的NSMutableArray項>我該怎麼做? – 07405

1

可以追加字符串的NSString對象比使用該對象在標籤像波紋管

NSMutableString *[email protected]"ID :"; 

for (int i=0; i<[marray count]; i++) { 
    eventName=[[arr2 objectAtIndex:i]objectForKey:@"Code"]; 
    [lblstr appendString:[NSString stringWithFormat:@"%@",eventName ]]; 
} 
label.text=lblstr; 
+1

附加字符串不會幫助它顯示因爲for循環運行速度非常快,不是嗎? – IronManGill

+0

我在這一行得到錯誤[lblstr appendString:[NSString stringWithFormat:@「%@」,eventName]];程序收到SIGABRT ..在控制檯區域中,我可以看到「試圖用appendString改變不可變對象:'」我該怎麼辦? – 07405

0
NSMutableString *str = [[NSMutableString alloc] init]; 

for(int i=0;i<[marray count];i++) 
{ 
    NSString *temp = [NSString stringWithFormat:@"%d - %@\n",i+1, [[arr2 objectAtIndex:i]objectForKey:@"Code"]]; 

    [str appendString:[NSString stringWithFormat:@"%@",temp]]; 

    //sleep(0.05); //Remove comment this line may help ! **Tricky Line** 
} 

label.text = str; 

[str release]; 
0

您可以創建的對象(索引)的數組,並使用componentsJoinedByString:

NSString* str = [array componentsJoindeByString: @", "];

或使用你的代碼,以替換

label.text=[NSString stringWithFormat:@"ID :%@",eventName ]; 

label.text=[label.text stringByAppendingFormat:@", %@", eventName];