Как изменить изображение nib uiimageview внутри метода init? - PullRequest
0 голосов
/ 20 декабря 2011

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

-(void)viewDidLoad{
     [super viewDidLoad];
     UIImage *tempImage = [UIImage imageNamed:@"instant_poetry_small.png" ];
     drawImage.image = tempImage;
}


-(id)initWithImage:(NSString *)img{
    [super viewDidLoad];
    return self;
}

Но я хочу изменить изображение uiimageview внутри метода init.Для этого я попробовал следующий код, но он не изменил изображение uiimageview.

-(void)viewDidLoad{
     [super viewDidLoad];
}


-(id)initWithImage:(NSString *)img{
    [super viewDidLoad];
    UIImage *tempImage = [UIImage imageNamed:@"instant_poetry_small.png" ];
    drawImage.image = tempImage;
    return self;
}

Ниже приведен метод делегата моего приложения

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[TTURLRequestQueue mainQueue] setMaxContentLength:0];

     TTNavigator *navigator = [TTNavigator navigator];
    navigator.window = _window;

    TTURLMap *map = navigator.URLMap;
    [map from:@"tt://appPhotos" toSharedViewController:[PhotoViewController class]];
    [map from:@"tt://photo/detail?name=(initWithImage:)" toSharedViewController:[PhotoView class]];
    [navigator openURLAction:[TTURLAction actionWithURLPath:[NSString stringWithFormat:@"tt://photo/detail?name=%@",@"level_me_up_small.png"]]];

    [_window makeKeyAndVisible];

    return YES;
}

Можете ли вы сказать мне, в чем разницамежду приведенным выше примером кода?

1 Ответ

2 голосов
/ 20 декабря 2011

В методе viewDidLoad загрузка пера завершена, и все элементы интерфейса доступны. Не вызывайте viewDidLoad из init, поскольку теперь есть способ узнать, загружено ли представление (чтение кончика).

Метод initWithImage, который вы написали, неверен и не работает таким образом. Если вы хотите создать пользовательский init, он больше похож на этот "

-(id)initWithImage:(NSString *)img{
   self= [super init];

   if (self) {
      // Create a property for this call where you keep the image.
      self.drawImage = [UIImage imageNamed:img];
   }

   return self;
}

Но это не загружает никакой NIB, поэтому вам нужно либо вызвать super initWithNIB: либо создать элементы с помощью кода.

...