Следующий код не петля:Для цикла не будет выполнять
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"Inside method, before for loop");
NSLog(@"dayBarArray.count = %lu", (unsigned long)dayBarArray.count);
for (int i = 0; i < dayBarArray.count; i++) //*** I've tried it this way
// for (DayChartBar *bar in dayBarArray) //*** I've tried it this way
{
NSLog(@"Inside for loop");
DayChartBar *bar = [dayBarArray objectAtIndex:i];
UIView *thisLabel = [self.scroller viewWithTag:(bar.tag + 100)];
CGRect visibleRect;
visibleRect.origin = self.scroller.frame.origin;
visibleRect.size = self.scroller.bounds.size;
NSLog(@"bar.frame = %@",NSStringFromCGRect(bar.frame));
NSLog(@"visibleRect.frame = %@",NSStringFromCGRect(visibleRect));
if (CGRectIntersectsRect(visibleRect,bar.frame))
{
NSLog(@"Inside if statement");
CGRect intersection = CGRectIntersection(visibleRect,bar.frame);
NSLog(@"bar.Frame is %@",NSStringFromCGRect(bar.frame));
thisLabel.center = CGPointMake((thisLabel.center.x), CGRectGetMidY(intersection));
}
else
{
thisLabel.center = thisLabel.center;
NSLog(@"Inside else statement");
}
}
NSLog(@"Still inside method, after for loop");
}
Вот результаты стратегически NSLog
заявления:
2014-08-17 10:07:37.221 WMDGx[54442:90b] Inside method, before for loop
2014-08-17 10:07:37.222 WMDGx[54442:90b] dayBarArray.count = 0
2014-08-17 10:07:37.223 WMDGx[54442:90b] Still inside method, after for loop
Как вы можете видеть, у меня есть попробовал как традиционный for loop
, так и быстрый перечисление. Ничего не выполнит. Как указывает NSLogs
, я вхожу в метод, но пропускаю цикл, независимо от подхода, который я сделал.
Я уверен, что написал хороший код, так как я успешно использовал очень похожий синтаксис (оба типа) во многих других местах вокруг этого же приложения. И да, я просмотрел десятки подобных вопросов на SO, а также консультировал базовые тексты по объективам C for
, но без разрешения.
Как всегда, я открыт для возможности совершить глупую ошибку, но если это так, она ускользает от меня. Код внутри цикла for
(я пытаюсь переместить UILabel
в ответ на прокрутку связанного UIView
), вероятно, не имеет значения, но я включил его на всякий случай.
Вся помощь и наблюдения оценены!
Edit:
Как любезно указал ниже, ответ на этот вопрос в том, что соответствующий dayBarArray пуст. Я просто проверил код, который добавляет объекты, и я недоумеваю. Я, конечно, должен был видеть очевидный ответ в своих NSLogs и не имею никаких оправданий, кроме того, что раньше я проверял код добавления, и бары, похоже, были добавлены. Я отчитаю, когда я выпрямился, что там не так.
Второе редактирование:
ОК, это был тупица ошибкой с моей стороны - я не инициализируется массив. Точно так же, если бы я не опубликовал вопрос, и, поскольку я полагал, что проверил содержимое массива (на самом деле, я проверял, были ли теги применены к UIViews), я не знаю, как долго это будет взяли меня, чтобы понять, что рассказывают мне журналы. Спасибо всем, кто ответил!
Синтаксис - это огонь, коллекция просто пуста. – Douglas
Почему вы ожидаете, что цикл будет выполняться вообще, когда вы четко зарегистрируете, что массив пуст? – rmaddy
Яйцо на лице! смотрите выше. Благодаря! – rattletrap99