Это, вероятно, будет сложно объяснить.
В основном у меня есть следующая структура в моем проекте:
У меня есть объект (график), который управляет другими объектами (узлами) и (дугами).
Все работает отлично, но я нашел необходимость добавлять кнопки к моим объектам узла. Это тоже работает нормально, у меня есть вывод NSLog, позволяющий мне узнать, какой узел был выбран и т. Д. Моя проблема, однако, я хочу, чтобы только один узел был выбран за один раз. Код инициализации для моих узловых объектов выглядит следующим образом:
- (id) initNodeWithData:(NSString *) _label: (int) _xpos: (int) _ypos
{
if(self = [super init])
{
//other variable inits here...
[self setButton: [UIButton buttonWithType:UIButtonTypeCustom]];
[button setImage:[UIImage imageNamed:@"node.png"]
forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"node.png"]
forState:UIControlStateHighlighted];
[button setImage:[UIImage imageNamed:@"nodeSelected.png"]
forState:UIControlStateSelected];
[button setImage:[UIImage imageNamed:@"nodeSelected.png"]
forState:(UIControlStateHighlighted|UIControlStateSelected)];
[button addTarget:self
action:@selector(buttonPressed)
forControlEvents:UIControlEventTouchUpInside];
}
return self;
}
- (void)buttonPressed
{
NSLog(@"%@ Pressed", label);
if(button.selected == YES) button.selected = NO;
else if(button.selected == NO) button.selected = YES;
}
Поскольку мои объекты узлов независимы друг от друга, я не могу (я не думаю, что смогу в любом случае) проверить, были ли выбраны какие-либо другие узлы, прежде чем продолжить выбор.
В идеале я хочу что-то вроде:
- (void)buttonPressed
{
//Check to see if other nodes are selected
//If not, button.selected = yes
//else clear other buttons
//then select current button
}
Но я думаю, что мне нужен этот код в моем классе viewController, где находится весь мой другой код, и я не знаю, как это сделать, потому что я предполагаю, что все это выходит за рамки.
Извините, что это не очень понятно, это трудно объяснить!