Ich bin relativ neu, begann mit meiner zweiten App, und große Probleme mit mehreren View-Controller. Ich habe die relevanten Bits am Ende dieser E-Mail hinzugefügt. Hier ist, was passiert:Mehrere UIViewController Probleme
MainViewController: erstellt RoomViewController, fragt dann nach seiner Ansicht RoomViewController: richtet den Raum mit den Elementen darin (in diesem Fall Hector und ein Kaffee). Room.m: Hintergrund des Raumes Item.m: erhält alle seine Informationen, erstellt sich selbst, ermöglicht Benutzerinteraktion. (touchesBegan usw.)
Das Problem ist: Wenn Element in RoomViewController erstellt wird, funktionieren die Berührungen nicht. Wenn Element in MainViewController erstellt wird, funktionieren die Berührungen (auch wenn sie erstellt wurden, um in roomView zu gehen).
Gibt es eine Art von Taschenlampe, die ich an den RoomViewController übergeben muss, damit er Interaktionen akzeptiert? Ich habe buchstäblich meinen Kopf gegen den Schreibtisch geschlagen und Dinge geworfen, weil ich sicher bin, dass es totenseinfach sein muss, aber ich habe stundenlang versucht, es festzunageln. Jede Hilfe, die Sie zur Verfügung stellen können, würde mich sehr glücklich machen.
-k.
Main view controller:
- (void)viewDidLoad {
RoomViewController *viewController = [[RoomViewController alloc] initWithNibName:@"RoomViewController" bundle:nil];
viewController.mainViewController = self;
self.roomViewController = viewController;
[viewController release];
roomView = self.roomViewController.view;
[self.view addSubview:self.roomViewController.view];
}
Zimmer-View-Controller:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
room = [[Room alloc] initRoom:@"OFFICE" displayName:@"Office"];
[self.view addSubview:room];
NSString *itemName = @"COFFEE";
CGPoint iLocation = CGPointMake(82, 192);
CGPoint hLocation = CGPointMake(120, 200);
NSString *hFace = @"FL";
Item *newItem = [[Item alloc] initItem:itemName viewController:self atLocation:iLocation];
[self.view addSubview:newItem];
[newItem release];
[self.view addSubview:hector];
hector.center = CGPointMake(350, 200);
}
return self;
}
Room.m:
-(id)initRoom:(NSString *)rName displayName:(NSString *)rDisplay {
roomName = rName;
displayName = rDisplay;
NSString *bgFile = [NSString stringWithFormat:@"%@_BG.png", roomName];
[self initWithImage:[UIImage imageNamed:bgFile]];
[self setCenter:CGPointMake(240, 135)];
return self;
}
Item.m:
- (id)initItem:(NSString *)iName viewController:(RoomViewController *)vc atLocation:(CGPoint)iLocation {
itemName = iName;
NSString *itemFile = [NSString stringWithFormat:@"%@_ITEM.png", itemName];
[self initWithImage:[UIImage imageNamed:itemFile]];
[self setCenter:iLocation];
myViewController = vc;
self.userInteractionEnabled = YES;
return self;
}
-(void)touchesBegan... etc
Ist die Interaktion in Ihrem RoomView-Controller aktiviert? – Daniel