UIViewController: die Verwendung von nicht deklarierter Bezeichner
Habe ich eine Methode die wie folgt aussieht:
- (void)testMethod:(int)myNumber {
switch (myNumber) {
case 0: {
MyViewController0 *controller = [self.myViewControllers objectAtIndex:myNumber];
if ((NSNull *)controller == [NSNull null]) {
controller = [[MyViewController0 alloc] initWithNibName:@"MyView0" bundle:nil];
controller.aVariable = self.myVariable;
[self.myViewControllers replaceObjectAtIndex:myNumber withObject:controller];
[controller release];
}
if (controller.view.superview == nil) {
//do some stuff with controller ...
}
break;
}
case 1: {
MyViewController1 *controller = [self.myViewControllers objectAtIndex:myNumber];
if ((NSNull *)controller == [NSNull null]) {
controller = [[MyViewController1 alloc] initWithNibName:@"MyView1" bundle:nil];
[self.myViewControllers replaceObjectAtIndex:myNumber withObject:controller];
[controller release];
}
if (controller.view.superview == nil) {
//do some stuff with controller ...
}
break;
}
//...
}
}
Mein problem beinhaltet diese Zeilen, die sind immer die gleichen:
if (controller.view.superview == nil) {
//do some stuff with controller ...
}
So, ich möchte zu löschen, diese Zeilen in der switch-case und setzen Sie Sie am Ende der Methode.
Das problem ist, wenn ich das mache, bekomme ich die Fehlermeldung: Use of undeclared identifier controller
.
Ich denke, es ist, weil es möglich ist, dass die controller
bleiben könnte schwarzarbeit (wenn kein Fall erfolgreich ist).
Aber was kann ich tun, um zu vermeiden, dass diese Zeilen in jeder case-Anweisung, kann ich stattdessen legen Sie es einmal am Ende der Methode?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist, weil Sie nur deklarieren Sie die variable in diesen bestimmten Bereichen, und Sie versuchen, verwenden Sie es außerhalb der Reichweite ist es erklärt (was Sie nicht können, dass ist der springende Punkt des Bereichs).
Müssen Sie dies vor Ihrem Schalter:
Dann in deinem Fall Aussagen nur zuordnen, um die bestehenden
controller
variable anstatt Sie zu deklarieren in diesem Bereich.controller
und es verwendet dieUIViewController
stattMyViewControllerX
. So erkläre ich zwei mal diese variable. EntfernenMyViewControllerX *
vorcontroller
, bekomme ich Schwierigkeiten mit dieser Liniecontroller.aVariable = self.myVariable;
weil Sie nicht wissen, über die Existenz voncontroller.aVariable
:Property aVariable not found on object of type UIViewController*