Objective-C: Добавление UIButtons программно из другого класса - PullRequest
0 голосов
/ 07 октября 2011

У меня проблемы с подключением точек между кодом и файлами .xib.

Если я хочу добавить серию UIButtons программно в мой контроллер представления, как бы я поступил так сотдельный класс?

Например, если у меня есть MainViewController.m, который установлен в качестве корневого контроллера представления в XCode, как я могу добавить UIButton к этому контроллеру представления из SecondViewController.m?Это вообще возможно?

Я бы хотел разместить весь свой код "пользовательского интерфейса" в отдельном классе.

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 октября 2011

используйте это

 #import "MainViewController.h"

@interface SecondViewController
{
  MainViewController *mainView;
}

@property(nonatomic, retain)  MainViewController *mainView;

-(void)addButtons;

В вашей реализации

@synthesize mainView;

-(void)addButtons
{
  UIButton *add = [UIButton alloc] init];
//do necessary stuff on button here
[self.mainView addSubview:add];
[add release];
}

В вашем MainViewcontroller.m

#import "SecondViewController.h"

-(void)viewDidLoad
{
[self superViewDidLoad];
SecondViewController *second = [SecondViewController alloc] init];
second.mainView = self;
[second addButton];
[second release];
}
0 голосов
/ 07 октября 2011

Для этого создайте UIButton *myButton программно, а затем вызовите [mainViewController addSubview:myButton];.Это может означать, что вам необходимо сохранить свойство MainViewController * в вашем классе SecondViewController.

Важные методы и свойства для экземпляра UIButton (по сути, просто взгляните надокументации, но вот минимальный набор вещей, с которых можно начать):

  • +[UIButton buttonWithType:buttonType] - Убедитесь, что вы делаете что-нибудь удаленно, чтобы использовать UIButtonTypeCustom здесь (это нене дает никаких фоновых изображений по умолчанию или иным образом nil out *

  • setFrame: - Расположите кнопку относительно ее контейнера и установите размер, для удобства использованияwidth и height должны составлять не менее 44 пикселей (как указано здесь ).

  • setTitle:forState: - UIControlStateNormal будет действовать каксвойства по умолчанию также для других состояний, поэтому вам может потребоваться установить здесь только текст

  • setBackgroundImage:forState: - используйте UIControlStateNormal и UIControlStateHighlighted / UIControlStateSelected в основном UIControlStateDisabledесли вы хотите показать его серым или недоступным в любой точке.

  • setImage:forState: - используйте для значка рядом стекст кнопки (например, стрелка, указывающая вниз для сохранения или вверх для загрузки и т. д.)

  • setEnabled:, setHidden:, setSelected: - переход между различными состояниями кнопок.setHighlighted: происходит автоматически при нажатии кнопки.

  • addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside - TouchUpInside почти всегда то, что вы хотите для простого нажатия кнопки, я использую метод с именем buttonClicked:нажмите здесь для обработки моей кнопки.

О, и если вы используете [[UIButton alloc] initWith...], не забудьте [myButton release], как только он будет добавлен к mainViewController:)

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