Вставка подпредставлений из других классов - PullRequest
0 голосов
/ 21 января 2012

Я пытаюсь добавить подпредставления UIImageView в мой viewController.view с учетом того, идут ли они над или под изображением.

По сути, мой viewController имеет изображение тела. Я разрешаю пользователю добавлять аксессуары к сцене, например шляпу. Мне нужно поместить некоторые из этих изображений выше, некоторые ниже индекса вида тела.

Однако мне сложно понять, как добавить изображение позади тела. Я подумал, что мог бы попытаться создать свойство UIImageView в качестве контрольной точки на viewController и сделать что-то вроде этого:

 //this is from my menuItem class which has a UIViewController property connecting it to the main scene
[self.viewController.view insertSubview:sprite belowSubview:self.viewController.body];

Однако этот код не работает, так как я получаю предупреждение "Property body not found on object of type 'UIViewController *'", хотя я @property и @synthesize его.

Кто-нибудь знает, что я делаю неправильно, или есть лучший дизайн, как это реализовать? Спасибо

@ shubhank:

  //.h
@interface ViewController : UIViewController {
    UIImageView *body;
}
@property (nonatomic, retain)  UIImageView *body;

 //.m (in viewDidLoad)
 self.body = [[UImageView alloc] initWithFrame:CGRectMake(250, 300, 339, 562)];
    self.body.image = [UIImage imageNamed:@"body.png"];
    [self.view addSubview:body];

Ответы [ 3 ]

0 голосов
/ 21 января 2012

происходит две вещи, которые я не могу понять.

[self.viewController.view insertSubview:sprite belowSubview:self.viewController.body]

Здесь вы получаете доступ к телу через self.viewController.body

итогда где тело определено

[self.view addSubview:body]

, так почему вы можете получить к нему доступ как с помощью контроллера представления, так и self.view.

Здесь что-то не так ..

Также

 self.body = [[UIImageView alloc] initWithFrame:CGRectMake(250, 300, 339, 562)];

измените его на

 self.body = [[[UIImageView alloc] initWithFrame:CGRectMake(250, 300, 339, 562)]autorelease];

свойство сохраняет представление UIImage. Вы должны освободить его.

0 голосов
/ 21 января 2012

Решенная проблема:

Глупая проблема.Мне просто нужно было объявить мой класс ViewController в моем классе MenuItem, а не использовать UIViewController *.

Спасибо за вашу помощь.

0 голосов
/ 21 января 2012

[self.view insertSubview:sprite belowSubview:body]. Не вставляйте viewController после self, потому что self IS viewController.

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