2016-07-11 18 views
0

.h-Datei:Einstellung NSString als UI-Label-Text

@property (strong,nonatomic) IBOutlet UILabel *output; 

.m-Datei:

@synthesize output; 

und ich möchte eine Zeichenfolge definieren, die den Text der UILabel trägt so schrieb ich

NSString *var =[[NSString alloc]initWithFormat:@"%@",output.text]; 

Allerdings sagt es mir, dass ich "Ausgabe" als nicht deklarierte Kennung verwendet habe. Was habe ich falsch gemacht?

Vielen Dank im Voraus

* Edit 1:

Vielen Dank für Ihre Anregungen. Ich erhalte jedoch diese gleichen Fehler mit all den gegebenen Vorschläge:

Error message

+0

Seine adaequat auf meiner Seite. Kannst du mir deinen Fehler zeigen? –

+0

Es besteht keine Notwendigkeit, die Eigenschaft zu synthetisieren. Es macht keinen Sinn, 'initWithFormat' zu verwenden, wenn Sie' self.output.text' direkt zuweisen können. Sie müssen ein Tutorial finden, das vor weniger als 5 Jahren aktualisiert wurde. – Avi

+0

Versuchen Sie, wie NSString zu verwenden * var = [NSString stringWithFormat: @ "% @", output.text]; –

Antwort

0

Ich denke, du hast das Label nicht richtig mit xib oder Storyboard verbunden gain verbinde das Label mit xib oder Storyboard korrekt mit den folgenden Screenshots und Codierungen.

FIRST: Ich ziehe das Label aus der Objektbibliothek I drag and drop the Label from the Object Library

ZWEITE: KLICKE control + Maus auf dem Etikett und zieht die enter image description here

Dritter zu ViewController.h beschriften : Jetzt BOX zeigt mit Standard-Cursor im Feld Name enter image description here

FOUR: Endlich den Label-Namen in Namensfeld von BOX geben enter image description here

Sobald ich, dass jetzt hat die Ansicht Controller.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 

@property (strong, nonatomic) IBOutlet UILabel *labelStringText; 

@end 

Dann in ViewController.m

#import "ViewController.h" 

@interface ViewController() 
@end 
@implementation ViewController 

@synthesize labelStringText; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    labelStringText.text = @""; 
    NSString *strLabelText = [NSString stringWithFormat:@"%@",labelStringText.text]; 
     //OR 
    NSString *strLabelText = labelStringText.text; 
} 

für Ihr einfaches Verständnis Ich setze den label.text auf string in viewDidLoad.Sie nur die Zeichenfolge, wo Sie wollen.

+0

Hallo, danke für deine Antwort. Allerdings scheint es nur zu funktionieren, wenn ich es in viewDidLoad ablege, aber ich bekomme die Fehlermeldung erneut, sobald ich es nur unter @implementation ablege. – glowstonetrees

+1

Wenn Sie den Code unter @implementation setzen, wird der Fehler definitiv angezeigt. Sie müssen das in viewDidLoad, buttonAction oder einer anderen Methode aufrufen. – user3182143

+0

Jetzt funktioniert es für Sie? – user3182143

0

Für Eigenschaften, die Sie haben self zu verwenden, um auf sie zuzugreifen.

So sollten Sie

+0

OP hat die 'Eigenschaft' synthetisiert. Also, brauche nicht 'selbst' –

0

verwenden, um Zugriff auf Ihre Eigenschaften erhalten Sie selbst

So sollte es

NSString *var =[[NSString alloc]initWithFormat:@"%@",self.output.text]; 
0

aussehen verwenden, sollten Sie diese verwenden können:

NSString *var =[[NSString alloc]initWithFormat:@"%@",_output.text]; 
0

Sie sollten ein Referenzierungs-Outlet vom Label zum View-Controller machen und den Code in viewDidLoad oder eine andere Funktion einfügen.

Klicken Sie zuerst auf dem Etikett und ziehen Sie von New Referenzierung Outlet auf den View-Controller:

First click on the label and drag from New Referencing Outlet to the View Controller.

Ihre Eigenschaft aus der Liste wählen Sie dann:

Then select your property from the list.

Schließlich sollten Sie ein Ergebnis wie folgt sehen: Finally, you should see a result like this:

Der Code:

.h:

@interface ViewController : UIViewController 

@property (strong, nonatomic) IBOutlet UILabel *output; 

@end 

.m:

@interface ViewController() 

@end 

@implementation ViewController 

@synthesize output; 

- (void)viewDidLoad { 
    [super viewDidLoad];  

    NSString *var =[[NSString alloc]initWithFormat:@"%@",output.text]; 

    NSLog(@"%@", var); 

} 

@end 
+0

Nein, das ist anders. Sie haben den Assistenten-Editor verwendet, der sowohl eine Eigenschaft erstellt als auch gleichzeitig den Referenz-Ausgang herstellt. Vorausgesetzt der OP hat den Code bereits geschrieben, muss er/sie nur die Referenz-Ausgangsverbindung herstellen, anstatt eine Eigenschaft erneut zu deklarieren. Danke für Ihre "konstruktive" Kritik. – sergeng