2009-08-17 2 views
0

Просто создал новый проект в Xcode (View based) и попытался создать такую ​​кнопку, как это программно, но он не отображается. Почему нет?Почему эта кнопка не отображается? iPhone-dev

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    // Override point for customization after app launch  
    [window addSubview:viewController.view]; 

    CGRect rect = CGRectMake(0, 20,100,20); 
    UIButton *button = [[UIButton alloc] initWithFrame:rect]; 

    [viewController.view addSubview:button]; 

    [window makeKeyAndVisible]; 
} 

ответ

2

Лучше, чтобы вы не использовали делегат приложения для настройки своего вида, просто загрузите свой первый корневой вид. Меняем AppDelegate в applicationDidFinishLaunching: назад в

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    // Override point for customization after app launch  
    [window addSubview:viewController.view]; 

    [window makeKeyAndVisible]; 
} 

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

- (void)loadView { 
    self.view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)]; 
    self.view.backgroundColor = [UIColor redColor]; 

    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 20, 100, 20)]; 
    [button setTitle:@"UIButton!" forState:UIControlStateNormal]; 
    [button setReversesTitleShadowWhenHighlighted:YES]; 
    [button setShowsTouchWhenHighlighted:YES]; 

    [self.view addSubview:button]; 
    [button release]; 
} 

Обычно я предпочитаю строить свои программно взгляды, так как я могу переопределить DrawRect: который вы не можете сделать внутри InterfaceBuilder AFAIK.

-5

Не делайте этого. Используйте конструктор интерфейса.

+0

Низкие рейтинги немного суровы, но я согласен с тем, что это не отличный ответ. Я считаю, что Interface Builder слишком неуклюж для значительной настройки. Это больше проблем, чем того стоит. – Amagrammer

0

Вы уверены, что его не показывают? он может быть просто прозрачным, и вы не можете его увидеть, попробуйте установить цвет фона кнопок на что-то ...

+0

Я попытался изменить цвет фона кнопки с помощью setBackgroundColor, но это не имело никакого значения. – quano

+0

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

+0

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

1

Попробуйте создать свою кнопку с [UIButton buttonWithType: UIButtonTypeCustom] или [UIButton buttonWithType: UIButtonTypeRoundedRect]

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

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