2013-12-11 10 views
2

У меня есть программно созданная кнопка, и я хочу переместить ее в другое место при вызове определенного метода. Пока я вижу кнопку, которую я создал, и я могу переместить другую кнопку, которую я перетащил в раскадровку, но я не уверен, как я могу ссылаться на программируемую кнопку в моем коде, чтобы изменить ее местоположение.Переместить программно сгенерированную кнопку

Код для генерации кнопки:

UIButton *generatedButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[generatedButton addTarget:self 
        action:@selector(genButtonTouched:) 
      forControlEvents:UIControlEventTouchDown]; 
generatedButton.frame = CGRectMake(84.0, 80.0, 70.0, 40.0); 
[self.view addSubview:generatedButton]; 

Внутри другого метод, у меня есть код для изменения местоположения кнопки. Если этот код находится в том же способе, как и где я произвожу кнопку она работает хорошо, но мне нужно, чтобы поместить это в другом методе:

[generatedButton setFrame:CGRectMake(xCoord, yCoord, buttonWidth, buttonHeight)]; 
+0

Создайте ссылку на ваш сгенерированный элемент в заголовочном файле, таком как UIButton * generatedButton и измените строку UIButton * generatedButton = [UIButton buttonWithType: UIButtonTypeCustom]; как self.generatedButton = [кнопка UIButtonWithType: UIButtonTypeCustom]; следующий измените строку как [self.generatedButton setFrame: CGRectMake (xCoord, yCoord, buttonWidth, buttonHeight)]; – jailani

+0

добавить UIButton * generatedButton; к вашему файлу заголовка и установить кадр везде, где вы хотите –

+0

@jailanihabeeb Нет, не добавляйте переменную экземпляра в заголовочный файл. Добавьте его в файл .m, чтобы он был закрыт. Он не принадлежит файлу .h. – rmaddy

ответ

2

В вашем ButtonViewController.h

@interface ButtonViewController : UIViewController{ 
    } 

@property (retain, nonatomic) UIButton *generatedButton; 

В вашем ButtonViewController.m

@implementation ButtonViewController 
@synthesize generatedButton; 

- (void)viewDidLoad 
{ 
generatedButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[generatedButton addTarget:self 
        action:@selector(genButtonTouched:) 
      forControlEvents:UIControlEventTouchDown]; 
generatedButton.frame = CGRectMake(84.0, 80.0, 70.0, 40.0); 
[self.view addSubview:generatedButton]; 
} 

// вызвать кнопку в любом месте в пределах класса, сделайте так: -

-(void)methodToMoveButton{ 
[generatedButton setFrame:CGRectMake(xCoord, yCoord, buttonWidth, buttonHeight)]; 
} 

Если вы хотите что-то еще, сообщите мне.

+0

Спасибо, что это было очень полезно. –

+0

Вы также можете ответить на этот вопрос;), Спасибо – mAc

+0

Неплохая идея сделать 'generateButton' общедоступной. Никакой внешний класс не должен иметь доступ к этому значению. Это также устарело, чтобы беспокоиться о линии '@ synthensize'. И если вы собираетесь создать свойство, вы должны использовать его в коде вместо прямого доступа к ivar. – rmaddy

0

Это не отличается от перемещения кнопки добавляемой в раскадровке. Создайте переменную экземпляра, чтобы сохранить ссылку на созданную вами кнопку. Затем вы можете получить доступ к кнопке другого метода, используя эту переменную экземпляра.

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