У меня есть UIScrollView, называемый скроллером. У него есть подвиды, которые являются пользовательскими кнопками UIButtons. Я пытаюсь напечатать количество подзаголовков до и после добавления, как показано ниже.
NSLog(@"Adding %d b4 %d",buttonno, [[self.scroller subviews] count]);
[self.scroller addSubview:menuBtn];
NSLog(@"Adding %d after %d",buttonno, self.scroller.subviews.count);
Подвид не отображается. Но количество подпредставлений увеличивается, например, вывод этого похож на
2014-03-11 17:53:49.863 ПК2[4519:60b] Добавление 1 b4 10
2014-03-11 17:53:49.872 PC2[4519:60b] Добавление 1 после 11
Но когда я пытаюсь напечатать количество подвидов с помощью тестовой кнопки, которая запускает код
NSLog(@"Buttons subviews: %d",self.scroller.subviews.count);
Я вижу, что подвид не добавляется. Я также вижу, что подвид не добавляется, когда вижу переменные в отладчике.
Кстати, я добавляю кнопки на основе таймера [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(checkForTiles) userInfo:nil repeats:YES];
Обновление :: Код для добавления подвида
if (!alreadyExists)
{
NSLog(@"Adding %d b4 %d",buttonno, [[self.scroller subviews] count]);
//AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
pccButtonViewController *menuBtn=nil;
menuBtn=[pccButtonViewController alloc ];
menuBtn = [pccButtonViewController buttonWithType:UIButtonTypeCustom];
menuBtn.no=buttonno;
menuBtn.slotNo=buttonCount;
menuBtn.frame = [[slotFrames objectAtIndex:menuBtn.slotNo] CGRectValue];
[menuBtn setBackgroundImage:[UIImage imageNamed:[[NSString alloc] initWithFormat:@"L%02d_Tile.jpg",buttonno]] forState:UIControlStateNormal];
[menuBtn addTarget:self action:@selector(miniButtons:) forControlEvents:UIControlEventTouchUpInside];
menuBtn.no=buttonno;
menuBtn.alpha=0.0f;
[self.scroller addSubview:menuBtn];
NSLog(@"Adding %d after %d",buttonno, self.scroller.subviews.count);
//NSLog(@"Subview Added %d btn no:%@",buttonno,[slotFrames objectAtIndex:menuBtn.slotNo]);
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0f];
//self.menuBtn.frame = CGRectMake(8, 10, 50, 60);
menuBtn.alpha=1.0f;
[UIView commitAnimations];
[buttons addObject:menuBtn];
buttonCount++;
}
buttonclicked=0;
[self.scroller setContentSize:CGSizeMake([self.scroller bounds].size.width,(ceil(buttonCount/tilesPerRow)+1)*[self.scroller bounds].size.width/tilesPerRow/2*3)];
appdelegate.Sharevar.vidsyncButtons=self.scroller.subviews.copy;//Used to maintain State when the view is presented for the second time
Это прекрасно работает, когда представление запускается в первый раз. Проблемы возникают, когда оно запускается во второй раз. Я удаляю представление из appdelegate следующим образом
-(void)removeAnyView
{
NSLog(@"Removing");
if (viewonScreen)
{
viewonScreen=false;
[self.inPort prepareToBeDeleted];
self.inPort=Nil;
[self.window.rootViewController dismissViewControllerAnimated:NO completion:^{[self presentView];}];
}
}