2009-07-31 19 views
0

私は比較的新しいです。私の2番目のアプリに着手し、複数のView Controllerで大きな苦労をしています。このメールの最後に関連するコードを追加しました。複数のUIViewControllerの問題

MainViewController:RoomViewControllerを作成し、そのビューを問い合わせます。 RoomViewController:部屋の中にアイテム(この場合は、Hectorとコーヒー)を設定します。 Room.m:部屋の背景 Item.m:すべての情報を取得し、それ自身を作成し​​、ユーザーの操作を可能にします。 (touchesBeganなど)

問題は次のとおりです。 アイテムがRoomViewControllerで作成されている場合、タッチが機能しません。 アイテムがMainViewControllerで作成されると、タッチが機能します(roomView内に作成されている場合でも)。

私はRoomViewControllerに何らかのトーチを渡して、インタラクションを受け入れるように指示する必要がありますか? 私は文字通り机の上に頭をぶつけて物を投げていました。なぜなら、それは死んでいるはずだと確信しているからです。 あなたが提供できるヘルプは私を非常に幸せにするでしょう。

-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]; 
} 

ルームビューコントローラ:

- (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

あなたのroomviewcontrollerで使用できる対話はありますか? – Daniel

答えて

1

がそれを手に入れました。私は今、ちょっとばかな気分だ。それは二重の問題でした。

1)私はclipsToBoundsをオンにしました...私のRoomVCは正しいサイズではないことが分かりました。そのため、アイテムはアクティブな領域にありませんでした。しかし、なぜそれは適切なサイズではなかったのですか?

2)XIBでは、私のRoomViewControllerが左上に自動サイズ設定されているはずです。代わりに、Autosizeの6つの矢印がすべてオンになっていたので、それをファンキーな次元に押しつぶしました。

他の誰かが私のコードでそれを理解できなかったことは知っています。だから素晴らしい一日です。

-k。

関連する問題