2015-02-10 6 views
0

Я пытаюсь добавить подпрограмму программно к моему ViewController : UIViewController с помощью метода, объявленного в моем классе ThirdClass : NSObject. Вот мой код:Добавить subview программно с использованием метода экземпляра

В файле ViewController.m я:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    ThirdClass *instanceOfThirdClass = [[ThirdClass alloc] init]; 
    [instanceOfThirdClass createView]; 
} 

И в моем ThirdClass.m Объявляю метод экземпляра:

-(void)createView{ 
    NSLog(@"enter create app"); 
    UIView *myView = [[UIView alloc]initWithFrame:CGRectMake(50, 0, 320, 100)]; 
    [myView setBackgroundColor:[UIColor redColor]]; 
    ViewController *instanceOfViewController = [[ViewController alloc]init]; 
    [instanceOfViewController.view addSubview:myView]; 

    } 

так что проблема, по-видимому, что является Я пытался добавить созданный вид в экземпляр класса, правильный способ сделать это - тот, который был отправлен @ gary-riches ниже,

+1

Вы вызываете [instanceOfThirdClass createView]; но имя метода - createApp. Приведите свой пример, и мы продолжим. Вы также не сказали, что не работает. Жалуется ли вам, что имена ваших методов неверны (они есть). Неужели он терпит неудачу? Не найти метод? –

+0

'createView' против' createApp'? – orkenstein

+2

Помимо вызова неправильного метода вы не добавляете subview в представление предполагаемого объекта. Вместо того, чтобы создавать объект _ViewController_ в _ThirdClass.m_, а затем добавлять к нему subview, верните _myView_ в приемник и затем добавьте subview. – Gandalf

ответ

4

Вы добавляете представление, создаваемое в соответствии с новым запрошенным представлением c ontroller, но отображаемое представление выглядит так, как у ViewController.m. Вам нужно добавить представление в представление ViewController.m.

Обновление метод CreateView для обработки вида:

-(void)createViewInView:(UIView *)aView{ 
    NSLog(@"enter create app"); 
    UIView *myView = [[UIView alloc]initWithFrame:CGRectMake(50, 0, 320, 100)]; 
    [myView setBackgroundColor:[UIColor redColor]]; 
    [aView addSubview:myView]; 
} 

Затем изменить свой призыв быть:

[instanceOfThirdClass createViewInView:self.view]; 

Кроме того, убедитесь, что у вас есть метод подпись в заголовке ThirdClass.h , Это должно быть:

-(void)createViewInView:(UIView *)aView; 
+0

У меня есть подпись метода в файле .h, но, видимо, это был неправильный способ добавить представление к экземпляру класса –

+0

голосов от меня и лучший ответ в 24h –

+0

Хороший ответ (проголосовали). Лауру, вам понадобится опубликовать соответствующий раздел вашего заголовка (от ThirdClass.h) и ваш новый метод 'createViewInView', если вам нужна помощь в решении решения Gary. –

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