Я относительно новичок, начинаю работу над вторым приложением и испытываю серьезные трудности с несколькими контроллерами представления. Я добавил соответствующие фрагменты кода внизу этого письма. Вот что происходит:
MainViewController: создает RoomViewController, затем запрашивает его представление
RoomViewController: устанавливает комнату с предметами в ней (в данном случае это Гектор и кофе).
Room.m: фон комнаты
Item.m: получает всю свою информацию, создает себя, обеспечивает взаимодействие с пользователем. (касается Бегана и т. д.)
Проблема в том, что:
Когда элемент создается в 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