2015-08-11 5 views
-1

Я программирую приложение для обеспечения безопасности дорожного движения, и будет много кода, так что, как я думал, я делю каждую функцию на класс.Доступ к изображению пользовательского интерфейса из другого класса

Теперь я пытаюсь установить фон основного ViewController из другого класса, однако он не работает. Это код, который я попробовал:

-(void)StartBackgroundAnimation 
{ 
ViewController *MainRoot = [[ViewController alloc] init]; 
MainRoot.BackgroundViewer.image = [UIImage imageNamed:@"Lunch_Background.png"]; 
NSLog(@"ok"); 
} 

То, что я сделал, что я создал функцию под названием StartBackgroundAnimation, и я импортировал главный класс вид-контроллер, и я создал из нее объект. После этого я импортировал этот класс в основной контроллер представления, и я вызвал эту функцию, но изображение не работает.

Примечание: NSLog работает отлично, и функция вызывается, однако изображение не изменяется.

+2

Это не имеет абсолютно никакого смысла, чтобы создать класс для каждой функции, вы будете иметь тысячи классов –

+0

я знаю, но это главный вопрос :) – SniperCoder

+2

Когда вы делаете 'ViewController * MainRoot = [[ViewController alloc] init]; 'вы создаете другой экземпляр этого контроллера, это не тот, который вы просматриваете –

ответ

0

Если вы действительно хотите хранить функции в разных классах, просто верните UIImage и назначьте его в контроллере представления.

Итак, внутри вашего пользовательского класса.

- (UIImage*)backgroundImage{ 
return [UIImage imageNamed:@"Lunch_Background.png"]; 
} 

Внутри основного контроллера вида:

self.view.backgroundView.image = [instanceofyourclass backgroundImage]; 
0

Если вы хотите получить доступ к данным из класса за пределами класса, как правило, лучше в Objective-C использовать свойство.

// MyClass.h 
@interface MyClass : Superclass 
@property (strong, nonatomic) UIImage * backgroundImage; 
@end 

Таким образом, вы можете прочитать/написать свойство с помощью self.backgroundImage из класса и anotherClass.backgroundImage снаружи него.

Edit: орфография ...

+0

Я сделал это так, но он не работает – SniperCoder

+0

Хм .. Вы на самом деле устанавливаете свойство изображения 'UIImageView' как' backgroundImage'? вы можете ввести функцию в ваш .m, которая будет запускаться всякий раз, когда изменяется свойство 'backgroundImage'. '- (void) setBackgroundImage: (UIImage *) image {myImageView.image = image; _backgroundImage = image;} '. Обе линии важны. первый устанавливает изображение на экране на «изображение», а второе изменяет сохраненное значение. Вам нужно будет обновить первую строку ссылкой на изображение. – iamthearm

Смежные вопросы