Почему каждая строка кода дает мне «недопустимый контекст»? - PullRequest
0 голосов
/ 01 апреля 2012

Это мой код, в котором каждая строка выдает ошибку «неверный контекст» при запуске приложения в iPad Simulator.Каждое утверждение после "self.Frame = frame; выдает ошибку. Как мне ее исправить?

- (void)makeFrame:(CGRect)frame number:(NSInteger) number color:(UIColor *) color {

    float rd1 = 225.00/255.00;
    float gr1 = 102.00/255.00;
    float bl1 = 0.00/255.00;

    float rd2 = 225.00/255.00;
    float gr2 = 153.00/255.00;
    float bl2 = 0.00/255.00;

    self.frame = frame;
    self.backgroundColor = [UIColor colorWithRed:rd1 green:gr1 blue:bl1 alpha:1.0]; 
    [[self layer] setBorderColor:[[UIColor blackColor] CGColor]]; 
    [[self layer] setBorderWidth:0.5];  
    [[self layer] setCornerRadius:10]; 
    self.tag = number;  //  set each button's tag
    [self setClipsToBounds: YES];

    //  do date label
    date = [[UILabel alloc]initWithFrame:CGRectMake(10, 2, 65, 40 )]; 
    date.backgroundColor = [UIColor clearColor]; //  x  y   w   h
    date.textColor = [UIColor colorWithRed:rd2 green:gr2 blue:bl2 alpha:1.0];
    date.text = [NSString stringWithFormat:@"%d", number];
    date.font = [UIFont boldSystemFontOfSize:40];
    //   date.alpha = 0.2;
    [self addSubview:date];
}

И вот код, который вызывает makeFrame:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    allButtons = [NSMutableArray array];
    for(int k = 40, m = 0; m < 6; m++, k+= 42)   //  this controls the vertical distance between rows
        for(int i = 0, j=32; i < 7; i++, j+=102) {  //  this controls the size and horizontal distance
            calendarButton *cb= [calendarButton buttonWithType:UIButtonTypeCustom];
            [cb makeFrame:CGRectMake(j, k, 100, 40) number: allButtons.count+1 color:[UIColor orangeColor]];
            //                       x  y   w   h
            [self.view addSubview:cb];
            [allButtons addObject:cb];  // put it in the array
        }

    calendarButton *cb= [calendarButton buttonWithType:UIButtonTypeCustom];
    [cb drawRect:CGRectMake(0,0, 100, 40)];   //  150

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

Вы вручную звоните drawRect, что, как я подозреваю, вызывает эту проблему.Из документов:

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

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

1 голос
/ 01 апреля 2012

Вы пытаетесь получить доступ к свойствам представления в контроллере представления. В вашем случае self - это UIViewController (или sublcass), измените его на self.view, чтобы получить доступ к просмотру

* 1005 Е.Г. *

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