2012-12-10 99 views
0

我有2個滾動視圖。我把許多按鈕放到第一個滾動視圖上。當我在第一個滾動視圖中單擊一個按鈕時,相關按鈕將填充第二個滾動視圖。滾動視圖+細分按鈕+ iOS

我希望第一個滾動視圖中的按鈕具有效果,就好像它們是段控件一樣。即當單擊一個按鈕時,其圖像變暗並且不能再次點擊,直到點擊第一個捲動畫面中的其他按鈕。

如何實現這一目標?任何示例代碼表示讚賞!謝謝!

回答

1

你就不能跟蹤哪個按鈕是最後點擊,並重置一個處於活動狀態,並設置一個你現在點擊爲無效狀態?只要創建一個屬性,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;  
} 
+0

謝謝!聽起來不錯,我很快就會嘗試。 – user1188849

+0

親愛的rdelmar,我工作!非常感謝! – user1188849

0

超級簡單,非常難看,但它的工作原理。您可以通過檢查圖像和按鈕的交互狀態來進一步優化,因此每次循環時都不會設置圖像。

-(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]; 
      } 
     } 

    } 
} 
+0

感謝CodaFi這麼多的超級迅速且簡單的答覆!我曾想過我必須使用按鈕標籤。一旦我測試它會回饋給你。 – user1188849

+0

親愛的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

+0

以下錯誤: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

1

嘗試添加滾動視圖內分段控制。

- (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. 
} 
+0

請注意,[只有鏈接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info)不鼓勵,所以答案應該是搜索解決方案的終點(vs.而另一個引用的中途停留時間往往會隨着時間推移而過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra

+0

將重視kleopatra。 – penningthoughts