Swift无法使用块看到objc类函数

时间:2015-07-21 05:53:30

标签: ios swift

我在swift中使用HMSegmentedControl(https://github.com/HeshamMegid/HMSegmentedControl)。

当我尝试使用以下功能时

- (void)setIndexChangeBlock:(IndexChangeBlock)indexChangeBlock;

当我使用以下语法时,Xcode找不到他的功能

categoriesView.setIndexChangeBlock {

}

它说“HMSegmentedControl没有名为categoriesView.setIndexChangeBlock的成员。我注意到HMSegmentedControl中不使用块的另一个函数已被Xcode识别。

- (void)setSelectedSegmentIndex:(NSUInteger)index animated:(BOOL)animated;

如何解决?

谢谢!

3 个答案:

答案 0 :(得分:2)

使用此

设置阻止
categoriesView.indexChangeBlock = { (index) in

  if index == 0 {
  //Do something
  }
}

答案 1 :(得分:0)

setIndexChangeBlock:方法需要一个块参数IndexChangeBlock,其defined如下:

typedef void (^IndexChangeBlock)(NSInteger index);

这意味着它需要一个NSInteger参数。您需要按如下方式调用该方法:

categoriesView.setIndexChangeBlock { (i: Int) -> () in

}

答案 2 :(得分:0)

您可以设置可见的scrollview区域,如:

func segmentedControlChangedValue(segmentedControl: HMSegmentedControl) {
        self.scrollView.scrollRectToVisible(CGRect.init(x: UIScreen.main.bounds.size.width * CGFloat(segmentedControl.selectedSegmentIndex), y: (self.scrollView.frame.origin.y), width: UIScreen.main.bounds.size.width, height: (self.scrollView.frame.size.height)), animated: true)

}