2015-03-24 2 views
0

Я хочу сделать таблицу в HTML и вставить в объектив c и после загрузки в HTML. Я использую этот код, я не получаю таблицу.Создать таблицу в iOS

myArray=[[NSMutableArray alloc]init]; 

array=[NSArray arrayWithObjects:@"1",@"2",@"3", nil]; 

NSString *[email protected]"<html><head><title>First</title><style>table , td, table , tr, th{border:1px solid #333333;padding:2px;}</style></head><body><table ><tr><th>Col1</th><th>Col2</th><th>Col3</th><th>Col4</th><th>Col5</th></tr>"; 

for (int i=0; i<3; i++) { 
    thiss= [NSString stringWithFormat:@"<tr><td>Data1</td><td> %@</td><td>Data1</td><td>Data1</td><td>Data1</td></tr>",[array objectAtIndex:i]]; 

    [myArray addObject:thiss]; 



} 
thiss =[embedHtml stringByAppendingString:[myArray objectAtIndex:0]]; 

NSString *idd=[thiss stringByAppendingString:@"</table></body></html>"]; 

NSLog(@"%@",idd); 

    [webview loadHTMLString:idd baseURL:nil]; 
NSLog(@"%@",thiss); 
+2

Какая у вас проблема? Попытка вашего кода (и добавления отсутствующих типов) выдает ваш html. Можете ли вы подтвердить, что ваш webView отображается на экране? – warly

+0

ya webview виден на экране, но они показывают только первую строку. Я хочу три строки из-за [myArray objectAtIndex: 0], как мы получаем все три – varun

+0

. Вы можете упростить код с помощью литералов массива: 'array = @ [@" 1 ", @" 2 ", @" 3 "];' и вместо '[array objectAtIndex: i]' just 'array [i]' – zaph

ответ

0

Хорошо, поэтому из вашего комментария единственная проблема, с которой вы столкнулись, заключается в том, что показана только первая строка. Это потому, что вы только добавить первую строку в HTML вне для цикла:

for (int i=0; i<3; i++) { 
    thiss= [NSString stringWithFormat:@"<tr><td>Data1</td><td> %@</td><td>Data1</td><td>Data1</td><td>Data1</td></tr>",[array objectAtIndex:i]]; 

    [myArray addObject:thiss]; 
} 

thiss =[embedHtml stringByAppendingString:[myArray objectAtIndex:0]]; 

не уверен, что вы используете массив. но добавление HTML непосредственно в строку внутри для цикла решает проблему: (очистить код)

// creating values with shorter literal syntax 
NSArray *values = @[@"1",@"2",@"3"]; 

// create mutable string 
NSMutableString *embedHTML = [@"<html><head><title>First</title><style>table , td, table , tr, th{border:1px solid #333333;padding:2px;}</style></head><body><table ><tr><th>Col1</th><th>Col2</th><th>Col3</th><th>Col4</th><th>Col5</th></tr>" mutableCopy]; 

for (int i=0; i<3; i++) { 
    // create row html and append it to mutable embedHTML 
    NSString *rowHTML = [NSString stringWithFormat:@"<tr><td>Data1</td><td> %@</td><td>Data1</td><td>Data1</td><td>Data1</td></tr>", values[i]]; 
    [embedHTML appendString:rowHTML]; 
} 

// finish html 
[embedHTML appendString:@"</table></body></html>"]; 

NSLog(@"%@", embedHTML); 
[webview loadHTMLString:embedHTML baseURL:nil]; 

Также обратите внимание, что если у вас есть фиксированные значения ширины массива, используя для в цикле гораздо проще, понятнее и ремонтопригодны, чем при использовании для:

for (NSString *value in values) { 
    // create row html and append it to mutable embedHTML 
    NSString *rowHTML = [NSString stringWithFormat:@"<tr><td>Data1</td><td> %@</td><td>Data1</td><td>Data1</td><td>Data1</td></tr>", value]; 
    [embedHTML appendString:rowHTML]; 
} 

поэтому нет избыточности, и как только вы расширить массив значений код продолжает работать, как ожидалось.