Многочисленные проблемы UIViewController - PullRequest
0 голосов
/ 31 июля 2009

Я относительно новичок, начинаю работу над вторым приложением и испытываю серьезные трудности с несколькими контроллерами представления. Я добавил соответствующие фрагменты кода внизу этого письма. Вот что происходит:

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

1 Ответ

1 голос
/ 31 июля 2009

Понял. Я чувствую себя немного глупо сейчас. Это была двойная проблема.

1) Я надел clipsToBounds ... оказалось, что мой RoomVC был неправильного размера, поэтому предметы не были в активной области. Но почему это не правильный размер?

2) В XIB мой RoomViewController должен был быть автоматически изменен в верхнем левом углу. Вместо этого все 6 стрелок Авторазмера были включены, так что это раздавило их в странные измерения.

Я знаю, что никто другой не мог бы понять это по моему коду, так что хорошего дня.

-k.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...