2013-02-18 3 views
0

Итак, у меня есть 5 строк, и при выборе они передают целое число с номером строки на мой второй контроллер представления.TableView не обновляет данные, даже если он распознает ввод?

Каждый номер имеет свой собственный массив с элементами и должен возвращать количество элементов для указанной строки.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"MasterCell"; 

    MasterCell *cell = (MasterCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 


if (radInt == 0) { 
    cell.textLabel.text = @"LM"; 
    NSLog(@"My return should have been LM"); 

} 
if (radInt == 1) { 
    cell.textLabel.text = @"Restauranger"; 
    NSLog(@"My return should have been Rest"); 
} 
    if (radInt == 2) { 
     cell.textLabel.text = [shoppingArray objectAtIndex:indexPath.row]; 
    } 
    if (radInt == 3) { 
     cell.textLabel.text = [annatArray objectAtIndex:indexPath.row]; 
    } 

    //cell.textLabel.text = [listData objectAtIndex:[indexPath row]]; 
    cell.imageView.image = [UIImage imageNamed:@"tab-icon1.png"]; 
    cell.accessoryType = UITableViewCellAccessoryNone; 


    return cell; 
} 

Это мой код, чтобы проверить его, и он не работает. NSLOG работает правильно, но данные просто обновляют обновление ... Что я сделал неправильно? Это Nslogs LM каждый раз, но он также имеет 1 в журнале, который является выбранной строкой (radInt).

Новый подход

static NSString *CellIdentifier = @"MasterCell"; 
    MasterCell *cell = (MasterCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell==nil) 
     cell = [[MasterCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

    if (radInt == 0) { 
     cell.textLabel.text = @"LM"; 
     NSLog(@"My return should have been LM"); 

    } 
    else if (radInt == 1) { 
     cell.textLabel.text = @"Restauranger"; 
     NSLog(@"My return should have been Rest"); 
    } 
    else if (radInt == 2) { 
     cell.textLabel.text = [shoppingArray objectAtIndex:indexPath.row]; 
    } 
    else if (radInt == 3) { 
     cell.textLabel.text = [annatArray objectAtIndex:indexPath.row]; 
    } 

    else { 
     cell.textLabel.text = @"Noes"; 
    } 


    //cell.textLabel.text = [listData objectAtIndex:[indexPath row]]; 
    cell.imageView.image = [UIImage imageNamed:@"tab-icon1.png"]; 
    cell.accessoryType = UITableViewCellAccessoryNone; 

    return cell; 

мнение перед тем ----

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    SecondViewController *enjoy = [[SecondViewController alloc] init]; 
    if ([[array objectAtIndex:indexPath.row] isEqual:@"Livsmedel"]) { 
     [enjoy setTitle:[array objectAtIndex:indexPath.row]]; 
     enjoy.radInt = 0; 
     NSLog(@"0"); 
    } 

    if ([[array objectAtIndex:indexPath.row] isEqual:@"Restauranger"]) { 
     [enjoy setTitle:[array objectAtIndex:indexPath.row]]; 
     enjoy.radInt = 1; 
     NSLog(@"1"); 
    } 

    if ([[array objectAtIndex:indexPath.row] isEqual:@"Shopping"]) { 
     [enjoy setTitle:[array objectAtIndex:indexPath.row]]; 
     enjoy.radInt = 2; 

    } 
    if ([[array objectAtIndex:indexPath.row] isEqual:@"Annat"]) { 
     enjoy.radInt = 3; 
    } 

    [self performSegueWithIdentifier:@"main" sender:self]; 
} 
+0

Кажется, нет никакой связи между 'indexPath' и вашей переменной выбора (' radInt'). – Matthias

+0

if (cell == nil) ?? – Omarj

+0

Вы зарегистрировали radInt, чтобы узнать, что это? Как вы передаете это в эту таблицу? – rdelmar

ответ

0

, Вам не нужно реализовать didSelectRowAtIndexPath: при подключении SEGUE в раскадровке из клетки к следующий контроллер. Что нужно реализовать, это prepareForSegue :. Ваш код должен выглядеть примерно так:

- (void)prepareForSegue:(UIStoryboardSegue *) segue sender:(id) sender 
{ 
    NSInteger row = [self.tableView indexPathForSelectedRow].row; 
    SecondViewController *enjoy = segue.destinationViewController; 
    if ([[array objectAtIndex:row] isEqual:@"Livsmedel"]) { 
     [enjoy setTitle:[array objectAtIndex:row]]; 
     enjoy.radInt = 0; 
     NSLog(@"0"); 
    } 

    if ([[array objectAtIndex:row] isEqual:@"Restauranger"]) { 
     [enjoy setTitle:[array objectAtIndex:row]]; 
     enjoy.radInt = 1; 
     NSLog(@"1"); 
    } 

    if ([[array objectAtIndex:row] isEqual:@"Shopping"]) { 
     [enjoy setTitle:[array objectAtIndex:row]]; 
     enjoy.radInt = 2; 

    } 
    if ([[array objectAtIndex:row] isEqual:@"Annat"]) { 
     enjoy.radInt = 3; 
    } 
} 
+0

Большое спасибо: D это действительно сработало. Я понятия не имел, что вы можете сделать prepareForSegue для отправки данных в раскадровки. Большое спасибо! –

Смежные вопросы