2013-09-23 3 views
1

У меня есть 2 кнопки, создается в файле .h и один нестандартный взглядКаковы причины неудачи утверждения

UIButton *btn_YourAccoun; 
UIButton *btn_CreateAccoun; 
UIView *view_top; 

в .m файл

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    view_top=[[UIView alloc]initWithFrame:CGRectMake(0, 0,320,60)]; 
    [view_top setBackgroundColor:[UIColor colorWithRed:80.0/255.0 green:79.0/255.0 blue:81.0/255.0 alpha:1.0]]; 
    [self.view addSubview:view_top]; 

    UILabel *labelheader=[[UILabel alloc]initWithFrame:CGRectMake(140, 5, 140, 20)]; 
    [labelheader setText:@"CREATE AN ACCOUNT"]; 
    [labelheader setTextColor:[UIColor whiteColor]]; 
    [labelheader setTextAlignment:UITextAlignmentLeft]; 
    [view_top addSubview: labelheader]; 


    btn_YourAccoun=[[UIButton buttonWithType:UIButtonTypeCustom]init ]; 
    [btn_YourAccoun setFrame:CGRectMake(0,0,65,44)]; 

    [btn_YourAccoun setTitle:@"YOUR ACCOUNT" forState:UIControlStateNormal]; 
    [btn_YourAccoun setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    [btn_YourAccoun.titleLabel setFont:[UIFont systemFontOfSize:12.0]]; 
    [btn_YourAccoun setBackgroundColor:[UIColor clearColor]]; 
    CALayer *layer1=[btn_YourAccoun layer]; 
    layer1.backgroundColor=[UIColor colorWithRed:232.0/255 green:230.0/255.0 blue:236.0/255.0 alpha:1.0].CGColor; 
    layer1.borderWidth=2.0; 
    layer1.borderColor=[UIColor colorWithRed:184.0/255 green:185.0/255.0 blue:188.0/255.0 alpha:1.0].CGColor; 


    [view_top addSubview:btn_YourAccoun]; 

    btn_CreateAccoun=[[UIButton buttonWithType:UIButtonTypeCustom]initWithFrame:CGRectMake(270, 0, 55,44)]; 
    [btn_CreateAccoun setTitle:@"Create" forState:UIControlStateNormal]; 
    [btn_CreateAccoun setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    [btn_CreateAccoun.titleLabel setFont:[UIFont systemFontOfSize:12.0]]; 
    [btn_CreateAccoun setBackgroundColor:[UIColor clearColor]]; 
    CALayer *layer2=[btn_CreateAccoun layer]; 
    layer2.backgroundColor=[UIColor colorWithRed:232.0/255 green:230.0/255.0 blue:236.0/255.0 alpha:1.0].CGColor; 
    layer2.borderWidth=2.0; 
    layer2.borderColor=[UIColor colorWithRed:184.0/255 green:185.0/255.0 blue:188.0/255.0 alpha:1.0].CGColor; 
    [view_top addSubview:btn_CreateAccoun]; 




} 

он дает ошибку, когда я был настройки кадра для btn_YourAccoun

error-: отказ в утверждение - [UIButton initWithFrame:], /SourceCache/UIKit_Sim/UIKit-1912.3/UIButton.m:9 21

пожалуйста, помогите мне

ответ

4

Вы получили это:

btn_CreateAccoun = [[UIButton buttonWithType:UIButtonTypeCustom] initWithFrame:CGRectMake(270, 0, 55,44)]; 

Вы не должны использовать фабричный метод и инициализатора. Вы либо хотите:

btn_CreateAccoun = [[UIButton alloc] initWithFrame:CGRectMake(270, 0, 55,44)]; 

или:

btn_CreateAccoun = [UIButton buttonWithType:UIButtonTypeCustom]; 
btn_CreateAccoun.frame = CGRectMake(270, 0, 55,44); 

UPDATE

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

В Objective-C каждый объект должен быть выделен один раз и инициализирован один раз. Поскольку объект должен быть инициализирован только один раз, программист установил, что его не следует инициализировать больше, чем это. Фабричный метод, такой как buttonWithType:, выделяет , а инициализирует объект, поэтому, когда вы вызывали buttonWithType:, а затем initWithFrame:, вы инициализировали его дважды, и поэтому утверждение не выполнено.

Надеюсь, что имеет смысл.

+0

эй Саймон большое спасибо, теперь он работает. Но скажите, в чем причина такого типа ошибок. –

+1

Нет проблем. Если вы удовлетворены ответом, нажмите зеленый галочку рядом с ним. И добро пожаловать в переполнение стека! – Simon

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