NSString mede up одного слова передается как NSNull, когда UILabel находится в имеет минимальный масштаб шрифта или минимальный размер шрифта

Когда я пытаюсь передать значение NSString, состоящее из одного слова, из ячейки с минимальным набором шрифтов или размера, кажется, что работает проверка с NSLogs, но когда я пытаюсь сравнить его с другой строкой он дает мне нераспознанный селектор [длина NSNull] и т. д. Со строкой, состоящей из нескольких слов, он работает нормально. Я думаю, что это ошибка Xcode 7. Кто-нибудь еще испытывал это? Есть ли работа вокруг?

Я попытался установить метку для ячейки как программно, так и в Interfece Builder, с тем же результатом. Моя настраиваемая ячейка таблицы выглядит следующим образом

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"aCell"];
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"aCell" forIndexPath:indexPath];

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.contentView.backgroundColor = [UIColor colorWithRed:165.0/255.0 green:15.0/255.0 blue:2.0/255.0 alpha:1];
cell.textLabel.backgroundColor = [UIColor colorWithRed:165.0/255.0 green:15.0/255.0 blue:2.0/255.0 alpha:1];
cell.textLabel.textAlignment = NSTextAlignmentCenter;
cell.textLabel.font = [UIFont fontWithName:@"AvenirNext-Medium" size:22.0f];
cell.textLabel.textColor = [UIColor colorWithRed:243.0/255.0 green:243.0/255.0  blue:243.0/255.0  alpha:1];
UIView * separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, 2)];
separatorLineView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"QastItBackground"]];
[cell.contentView addSubview:separatorLineView];
cell.textLabel.adjustsFontSizeToFitWidth = YES;
cell.textLabel.minimumScaleFactor = 0.5;


NSDictionary *categories = [Options categories];
NSArray *details = [categories objectForKey:self.title];
NSString *detail = details [indexPath.row];

cell.textLabel.text = detail;

return cell;
}

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


UITableViewCell *cell = [[self tableView] cellForRowAtIndexPath:indexPath];
NSString *selection = cell.textLabel.text;
[[TemporarySelection sharedStore]updateSelection:selection];
UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];

if ([self.title isEqualToString:@"Two Ways"]) {
    TwoWaysViewController *twvc = [[TwoWaysViewController alloc]init];
    twvc = (TwoWaysViewController *)[storyboard instantiateViewControllerWithIdentifier:@"TwoWays"];
    [self presentViewController:twvc animated:YES completion:nil];
    CFRunLoopWakeUp(CFRunLoopGetCurrent());

} else {

DieFacesViewController *dfvc = (DieFacesViewController *)[storyboard instantiateViewControllerWithIdentifier:@"DieFaces"];
[self presentViewController:dfvc animated:YES completion:nil];
CFRunLoopWakeUp(CFRunLoopGetCurrent());

}
}

затем в новом контроллере представления я беру значение из синглтона и сравниваю его с другой строкой

-(void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:YES];

NSString *ts = [[TemporarySelection sharedStore]temporarySelection];

NSArray *favourites = [[FavouritesStore sharedStore]allFavourites];
NSArray *selectedFaces = [[SelectedStore sharedStore]selectedOptions];

UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"selectorbg"] drawInRect:self.view.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

self.view.backgroundColor = [UIColor colorWithPatternImage:image];

self.selectionName.text = ts;

NSLog(@"%@", ts);
NSLog(@"%@", selectedFaces[0] );


if ([self.selectionName.description isEqualToString: selectedFaces[0]]) {
    self.faceOne.image = [UIImage imageNamed:@"face1red"];
} else if (selectedFaces[0] == [NSNull null]) {
    self.faceOne.image = [UIImage imageNamed:@"face1white"];
} else {
    self.faceOne.image = [UIImage imageNamed:@"face1grey"];
}
}

NSLog показывает правильную строку и с точкой останова все гладко до первого оператора if. если я уберу его, второе утверждение будет в порядке, поэтому проблема должна лежать на *ts NSString. У меня есть другое табличное представление с пользовательской ячейкой класса через конструктор интерфейса, и у него та же проблема. Я знаю, это может показаться очень запутанным, но я перепробовал все, что мог придумать, и это, кажется, причина.

0 ответов

Другие вопросы по тегам