나는 모든 버튼에 이미지를 설정하는 더 좋은 방법을 찾고있다. 지금은 for 루프를 사용하고 있지만 각 버튼을 개별적으로 호출해야합니다. 추악하고 길다.IOS 문자열 변수에서 UIButton 호출하기
@property (weak, nonatomic) IBOutlet UIButton *box0;
@property (weak, nonatomic) IBOutlet UIButton *box1;
// up to 150 of them on the page
@property (weak, nonatomic) IBOutlet UIButton *box150;
@end
@implementation HelpTwo
{
bool checked0;
bool checked1;
bool checked2;
bool checked3;
}
문제의 부분
내가 대신 할 노력하고 있지만NSArray *boxes = [draftboxeschecked componentsSeparatedByString:@","];
for (NSString *boxNumber in boxes) {
NSString *modifiedBox = [NSString stringWithFormat:@"_box%@",boxNumber];
bool check = [NSString stringWithFormat:@"checked%@",boxNumber];
[modifiedBox setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
check = YES;
}
EDIT 작동하지 않습니다 무엇
NSArray *boxes = [draftboxeschecked componentsSeparatedByString:@","]; // pulled from DB and as an example could be 0,1,8,19,29 NSInteger i; for (i=0; i < boxes.count; i++) { NSString *box = boxes[i]; if ([box isEqualToString:@"0"]) { [_box0 setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal]; checked0 = YES; } else if ([box isEqualToString:@"1"]) { [_box1 setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal]; checked1 = YES; } else if ([box isEqualToString:@"2"]) { [_box2 setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal]; checked2 = YES; } else if ([box isEqualToString:@"3"]) { [_box3 setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal]; checked3 = YES; } // all the way to 150
:
을이미지에 효과가있는 것 같습니다. 여전히 부울 값을 추가해야합니다. 모든 버튼을 IBOutletCollection에 추가하고 각각에 태그 번호를 설정했습니다. 콜렉션은 buttonCollection입니다.
NSArray *boxes = [draftboxeschecked componentsSeparatedByString:@","];
for (NSString *boxNumber in boxes) {
for (UIButton *button in _buttonCollection) {
if (button.tag == boxNumber.intValue) {
// set image
[button setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
}
}
}
코드에서 문제가 몇 가지 있습니다. NSString은 setImage를 지원하지 않습니다. 2. 루프에서 로컬 변수를 생성하고 있습니다. 외부에서 수행해야합니다. 3. 검사는 불량이지만 NSString 을 할당하십시오. 4. 검사하지 않습니다. 코드에 너무 많은 문제가 있습니다. . 어쩌면 더 많은 코드를 게시하여 명확하게 만들 수 있으며, 달성하려는 내용을 더 잘 설명 할 수 있습니다. – dogsgod
IB에 150 개의 버튼이 있습니까? 해결책은 태그를 사용하고 태그를 기반으로 적절한 버튼을 얻는 것입니다. 단추가 삽입 된 UITableView 사용을 고려해 보셨습니까? 이것은 uiviewcontroller에서 150 개의 버튼을 생성하는 효율적인 방법이 아닙니다. – Vig
uiviewcontroller는 클릭 할 때 체크 박스 역할을하는 150 개의 버튼을 가지고 있습니다. 해당 페이지에서 옵션을 선택하기위한 것입니다. 내가 작업하고있는 부분은 "초안"을 저장하고 나중에 다시 돌아가고 싶습니다. 올바른 이미지를 설정했는지 (선택되어 있거나 선택되어 있지 않은지)입니다. 부울은 세그먼트를 선택하여 어느 상자를 선택했는지 알 수 있도록합니다 배열 – JeffK