Итерация объекта манипулирования или изменение нескольких объектов одновременно - PullRequest
1 голос
/ 17 января 2010

Это лучший способ делать то, что я делаю?goodThingX, badThingX и nothin - это UILabels.

NSString *todayNothing = [[todayArray objectAtIndex:0] objectForKey: @"nothing"];
if (todayNothing!=NULL) {
    goodThing1.hidden = YES;
    goodThing2.hidden = YES;
    goodThing3.hidden = YES;
    badThing1.hidden = YES;
    badThing2.hidden = YES;
    badThing3.hidden = YES;
    nothing.text = todayNothing;
    nothing.hidden = NO;
} else {
    goodThing1.hidden = NO;
    goodThing2.hidden = NO;
    goodThing3.hidden = NO;
    badThing1.hidden = NO;
    badThing2.hidden = NO;
    badThing3.hidden = NO;
    nothing.hidden = YES;
}

т.е. когда текст todayNothing содержит какой-либо текст, я хочу скрыть 6 меток и отобразить метку nothing, иначепротивоположный.Я не удосужился оптимизировать это, но, вероятно, сейчас будет больше ярлыков, чем 6 ..

Ответы [ 2 ]

2 голосов
/ 17 января 2010

Вы можете поместить их все в массив в init или awakeFromNib или аналогичном, что упростит повторение позже.

@class MyThing {

   UIView *theThings[NUM_THINGS]; // ...or use an NSArray if you like that

}
@end

- (id)init // maybe awakeFromNib would be a better place for UI elements
{
  self = [super init];
  if (self) {
    theThings[0] = goodThing1;
    theThings[1] = goodThing2;
    theThings[2] = goodThing3;
    :
  }
  return self;
}

... а затем позже вы будете использовать цикл, подобный этому

for (int i=0; i<NUM_THINGS; i++)
  theThings[i].hidden = YES;
1 голос
/ 17 января 2010

Во-первых, у вас есть нечто, известное как «логическая переменная».

NSString *todayNothing = [[todayArray objectAtIndex:0] objectForKey: @"nothing"];
BOOL todayNothing_has_something = (todayNothing!=nil); // YES if todayNothing!=nil, NO otherwise
goodThing1.hidden = todayNothing_has_something;
goodThing2.hidden = todayNothing_has_something;
goodThing3.hidden = todayNothing_has_something;
badThing1.hidden = todayNothing_has_something;
badThing2.hidden = todayNothing_has_something;
badThing3.hidden = todayNothing_has_something;
if (todayNothing)
  nothing.text = todayNothing;
nothing.hidden = ! todayNothing_has_something;

Во-вторых, лучше использовать массив или NSArray для хранения всех good - и badThing с. (См. Ответ эпателя.)

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