2012-12-22 11 views
8

Sto cercando di mettere una stringa Attribuito all'interno di un NSTextField, che è essa stessa all'interno di un NSAlert Ecco il mio codice:[__NSCFConstantString Pointsize]: selettore non riconosciuto inviato a Instan

NSTextField *label1 = [[NSTextField alloc]initWithFrame:NSMakeRect(0, 23, 50, 20)]; 
[label1 setEditable:FALSE]; 
[label1 setAllowsEditingTextAttributes:TRUE]; 
[label1 setBezeled:FALSE]; 
label1.backgroundColor = [NSColor clearColor]; 
NSString *login = @"Username"; 
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:login]; 
NSString *boldFontName = [[NSFont boldSystemFontOfSize:12] fontName]; 
[attrString beginEditing]; 
NSRange ran = NSMakeRange(0, 8); 
[attrString addAttribute:NSFontAttributeName 
        value:boldFontName 
        range:ran]; 

[attrString endEditing]; 
NSLog(@"%@",attrString); 
[label1 setAttributedStringValue:attrString]; 
[alert setAccessoryView:label1]; 
[alert runModal]; 

Tuttavia, non appena [ alert runModal], la mia app si blocca

"[__NSCFConstantString pointSize]: unrecognized selector sent to instance 0x7fff74035bb0" 

Non so perché questo sta accadendo. Sembra che sia correlato alla stringa, perché non appena rimuovo [alert setAccessoryView: label1] o do label1 a nsstring standard, funziona bene. Per favore aiuto!

risposta

37

Hai fatto bene. Ma hai fatto un piccolo errore. Hai superato NSString come attributo per NSFontAttributeName ma si aspetta NSFont.

Prova questo.

NSFont *boldFontName = [NSFont boldSystemFontOfSize:12]; 
[attrString beginEditing]; 
NSRange ran = NSMakeRange(0, 8); 
[attrString addAttribute:NSFontAttributeName 
        value:boldFontName 
        range:ran]; 
+0

Hi giù elettore! perché l'hai fatto? –

1

La risposta sopra è assolutamente corretta. Ho avuto lo stesso crash che si è verificato in crash solo su iOS 7.0.3 & 7.0.4 e funziona perfettamente in tutte le altre versioni. Dopo tanta indagine, sono venuto a sapere che @ "HelveticaNeue-Italic" non è disponibile nelle versioni 7.0.3 di iOS 7.0.3 & 7.0.4, in modo da ottenere il suddetto crash in quelle versioni.

ho risolto il problema con il codice qui sotto:

self.headerFont = [UIFont fontWithName:@"HelveticaNeue-Italic" size:16.0f]; 
if (self.headerFont == nil) { 
    self.headerFont = [UIFont fontWithName:@"HelveticaNeue" size:16.0f]; 
}