Контрольный список в представлении таблицы не будет работать - PullRequest
0 голосов
/ 15 июля 2011

У меня есть таблица View, которая при добавлении ячейки не будет работать, как ячейки, которые уже есть в приложении.Когда я нажимаю на новую ячейку, моя программа падает, я получаю эту ошибку: «SIGABRT»

А вот мой код, когда ячейка нажата:

- (void)tableView:(UITableView *)tableView 
  didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{

    [tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:YES];
    [self setCurrentChosenFund: [self.cells objectAtIndex:indexPath.row]];

    [self setSelectedCell: [tableView cellForRowAtIndexPath:indexPath]];

    if  ([self.currentChosenFund valueForKey:@"Selected"] == [NSNumber 
    numberWithBool:YES])

    {
        //selectedCell.imageView.image = [UIImage imageNamed:@"checklist.png"];
        [self.selectedCell setAccessoryType: UITableViewCellAccessoryNone];
        [self.currentChosenFund setObject:[NSNumber numberWithBool:NO] 
     forKey:@"Selected"]; // ERROR IS ON THIS LINE :(
    }

    else

    {          
        //selectedCell.imageView.image = nil;  
        [self.selectedCell setAccessoryType: UITableViewCellAccessoryCheckmark];
        [self.currentChosenFund setObject:[NSNumber numberWithBool:YES] 
     forKey:@"Selected"];
    }

    [[NSUserDefaults standardUserDefaults] setObject:self.cells forKey:@"funds"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

Кто-нибудь знает, какчтобы исправить это?

Код для метода save::

- (IBAction)saveButton:(id)sender {
NSLog(@"%@", textField.text);
CheckListPracticeViewController * obj = (CheckListPracticeViewController     
         *)self.parentViewController;
[obj.cells insertObject:[NSDictionary dictionaryWithObject:textField.text      
forKey:@"name"] atIndex:0]; 

// [obj.cells insertObject:textField.text atIndex:0];
[self dismissModalViewControllerAnimated:YES];

}

ОК, поэтому я добавил эту строку кода в свой saveButton: метод:

    [self.currentChosenFund setObject:[NSNumber numberWithBool:NO]    
             forKey:@"Selected"];

Я все еще заставляю приложение зависать!Я попытался установить это как ДА, так и НЕТ, но это не будет работать.

1 Ответ

1 голос
/ 15 июля 2011

Это скорее комментарий, чем ответ, хотя может оказаться и то и другое. Логичнее использовать BOOL для ключа Selected.

Также вы можете использовать

if ([[self.currentChosenFund valueForKey:@"Selected"] boolValue]) {
}

чтобы избежать сравнения.

РЕДАКТИРОВАТЬ: Основываясь на комментариях, я считаю, что проблема с вашим saveButton метод. Вы не устанавливаете объект для ключа «Выбрано», поэтому при переходе к его поиску вы получаете ошибку. Чтобы исправить это, установите значение по умолчанию в этом методе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...