我有2個滾動視圖。我把許多按鈕放到第一個滾動視圖上。當我在第一個滾動視圖中單擊一個按鈕時,相關按鈕將填充第二個滾動視圖。滾動視圖+細分按鈕+ iOS
我希望第一個滾動視圖中的按鈕具有效果,就好像它們是段控件一樣。即當單擊一個按鈕時,其圖像變暗並且不能再次點擊,直到點擊第一個捲動畫面中的其他按鈕。
如何實現這一目標?任何示例代碼表示讚賞!謝謝!
我有2個滾動視圖。我把許多按鈕放到第一個滾動視圖上。當我在第一個滾動視圖中單擊一個按鈕時,相關按鈕將填充第二個滾動視圖。滾動視圖+細分按鈕+ iOS
我希望第一個滾動視圖中的按鈕具有效果,就好像它們是段控件一樣。即當單擊一個按鈕時,其圖像變暗並且不能再次點擊,直到點擊第一個捲動畫面中的其他按鈕。
如何實現這一目標?任何示例代碼表示讚賞!謝謝!
你就不能跟蹤哪個按鈕是最後點擊,並重置一個處於活動狀態,並設置一個你現在點擊爲無效狀態?只要創建一個屬性,lastClicked,並做到這一點:
-(IBAction) buttonClicked:(UIButton *)sender {
[self.lastClicked setUserInteractionEnabled:YES];
[self.lastClicked setImage:[UIImage imageNamed:@"enabledImage"] forState:UIControlStateNormal];
[sender setUserInteractionEnabled:NO];
[sender setImage:[UIImage imageNamed:@"disabledImage"] forState:UIControlStateNormal];
self.lastClicked = sender;
}
超級簡單,非常難看,但它的工作原理。您可以通過檢查圖像和按鈕的交互狀態來進一步優化,因此每次循環時都不會設置圖像。
-(void) buttonClicked:(UIButton *)sender {
for (UIButton *btn in self.scrollView.subviews) {
if ([sender isKindOfClass:[UIButton class]]) {
if (btn == sender) {
[btn setUserInteractionEnabled:NO];
[btn setImage:[UIImage imageNamed:@"disabledImage"] forState:UIControlStateNormal];
} else {
[btn setUserInteractionEnabled:YES];
[btn setImage:[UIImage imageNamed:@"enabledImage"] forState:UIControlStateNormal];
}
}
}
}
感謝CodaFi這麼多的超級迅速且簡單的答覆!我曾想過我必須使用按鈕標籤。一旦我測試它會回饋給你。 – user1188849
親愛的CodaFi,我拖放並將按鈕添加到庫中的第一個滾動視圖,而不是代碼。當我使用下面的' - (IBAction)btnClick:(id)發件人 {for(UIButton * btn in self.scrollView.subviews){ if(btn == sender){[btn setUserInteractionEnabled:NO]; [btn setImage:[UIImage imageNamed:@「disabledImage」] forState:UIControlStateNormal]; } else { [btn setUserInteractionEnabled:YES]; [btn setImage:[UIImage imageNamed:@「enabledImage」] forState:UIControlStateNormal]; } }} – user1188849
以下錯誤:2012-12-10 10:26:37.028 Autoscroll [457:b603] - [UIImageView setImage:forState:]:無法識別的選擇器發送到實例0x4b7a130 2012-12-10 10:26: 37.032自動滾動[457:B603] ***終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: ' - [UIImageView的setImage:forState:]:無法識別的選擇發送到實例0x4b7a130' ***在第一擲調用堆棧: ( \t 0的CoreFoundation 0x00dce5a9 __exceptionPreprocess + 185 \t 1 libobjc.A.dylib 0x00f22313 objc_exception_throw + 44 – user1188849
嘗試添加滾動視圖內分段控制。
- (void)viewDidLoad
{
[super viewDidLoad];
journals = [[NSMutableArray alloc]init];
self.tableView.dataSource = self;
self.tableView.delegate = self;
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 49, 320, 29)];
self.segmentedControl.frame = CGRectMake(0, 0, 640, 29);
scrollView.contentSize = CGSizeMake(self.segmentedControl.frame.size.width, self.segmentedControl.frame.size.height -1);
scrollView.showsHorizontalScrollIndicator = NO;
self.segmentedControl.selectedSegmentIndex = 0;
[scrollView addSubview:self.segmentedControl];
[self.view addSubview:scrollView];
[self fillJournals];
// Do any additional setup after loading the view, typically from a nib.
}
請注意,[只有鏈接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info)不鼓勵,所以答案應該是搜索解決方案的終點(vs.而另一個引用的中途停留時間往往會隨着時間推移而過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra
將重視kleopatra。 – penningthoughts
謝謝!聽起來不錯,我很快就會嘗試。 – user1188849
親愛的rdelmar,我工作!非常感謝! – user1188849