2009-07-31 7 views
0

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 
+0

Ist die Interaktion in Ihrem RoomView-Controller aktiviert? – Daniel

Antwort

1

Verstanden. Ich fühle mich jetzt wie ein Idiot. Es war ein zweifaches Problem.

1) Ich legte clipsToBounds an ... stellt sich heraus, dass mein RoomVC nicht die richtige Größe hatte, also waren die Elemente nicht im aktiven Bereich. Aber warum war es nicht die richtige Größe?

2) In der XIB sollte mein RoomViewController oben links automatisch skaliert worden sein. Stattdessen waren alle 6 Autosize-Pfeile eingeschaltet, sodass es in funky Dimensionen zerfiel.

Ich weiß, es gibt keine Möglichkeit, dass jemand anderes durch meinen Code herausgefunden hätte, also, einen schönen Tag.

-k.

Verwandte Themen