Создать UIImageView в объекте - PullRequest
0 голосов
/ 26 марта 2011

Я пытаюсь создать UIImageView программно в методе объекта.

-(void) createApple
{
  CGRect myImageRect = CGRectMake(100, 100, 64, 64);
  image = [[UIImageView alloc] initWithFrame:myImageRect];
  [image setImage:[UIImage imageNamed:@"Apple.png"]];
  [self.view addSubview:image];
  [image release]; 
}

, когда я использую этот код в ViewController.m, он работает нормально, но когда я использую его в своем объекте Apple, яполучить сообщение об ошибке: запросить член 'view' в чем-то, не являющемся структурой или объединением.

Что я использую вместо self.view ???

Извините, если я повторяю сообщения.Я видел подобный вопрос, но не был уверен, что это точно такая же ситуация.

Ответы [ 4 ]

1 голос
/ 14 мая 2012

Если я правильно понял ваш вопрос, у вас есть interface, как это

@interface Apple: NSObject
@end

Если вы хотите создать UIImageView с использованием методов NSObject, попробуйте этоВаш Apple.m файл

@implementation Apple

-(UIImageView *)ImageView
{
    UIImageView *imgView = [UIImageView alloc]initWithFrame:CGRectMake(100, 100, 64, 64)];
    imgView setImage:[UIImage imageNamed:@"Apple.png"];
    return imgView;
}
@end

теперь вызывает этот метод там, где вы хотите показать свое изображение, в вашем файле ViewController.m вы можете вызывать его так: сначала вам нужно просто импортировать класс объекта.

#import "ViewController.h"
#import "Apple.h"

@implementation ViewController
-(Void)ViewDidLoad
{
    Apple *appleObject = [Apple alloc]init];
    UIImageView *imageViewOfViewController = [appleObject ImageView];
    [self.view addSubView:imageViewOfViewController];
}
@end

Я показываю вам метод viewview в методе viewDidLoad, который вы можете вызывать в любом месте, как это.

0 голосов
/ 26 марта 2011

Поскольку "view" является свойством UIViewController, а ваш "яблочный объект" не имеет его.

0 голосов
/ 26 марта 2011

Проблема в том, что вы не вызываете этот метод внутри UIViewController. Лично я бы сделал это немного иначе:

- (UIView*) newAppleView
{ 
  CGRect myImageRect = CGRectMake(100, 100, 64, 64);

  UIImageView *imageView;
  imageView = [[UIImageView alloc] initWithFrame:myImageRect];
  [imageView setImage:[UIImage imageNamed:@"Apple.png"]];

  return [imageView autorelease];
}

Предполагая, что в вашем UIViewController реализован метод newAppleView , вы можете легко добавить новое яблоко:

[self.view addSubview:[self newAppleView]];
0 голосов
/ 26 марта 2011

Строка, вызывающая ошибку:

[self.view addSubview:image];

Если ваш Apple объект не расширяет UIViewController, тогда на нем будет свойство self.view, если только вы не определили его самостоятельно.

Относительно того, что использовать вместо этого, трудно сказать, не зная точно, что вы пытаетесь сделать.

Однако, если вы хотите, чтобы ваш класс Apple отображал что-то на экране, то, вероятно, вам нужно обновить Apple, чтобы он расширял либо UIViewController, либо (возможно) UIView. Тогда в первом случае вы можете использовать self.view, а во втором случае вы можете просто сделать [self addSubview: image];.

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