如何获取UIView对象与ViewController对象进行通信

时间:2014-08-08 06:56:21

标签: ios iphone xcode

我正在使用StoryBoard中的iPhone应用程序。它中有一个UIScrollView。在其中,它有一个SliderView,这是我编写的自定义子类,派生自UIView

SliderView内部,我正在执行此方法:

// Inside SliderView.m
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // whenever someone touches inside of SliderView, this method fires
}

这是我的问题。在我的StoryBoard中,我想禁用UIScrollView的弹性垂直滚动。

通常情况下,这很容易。假设我已将UIScrollView作为IBOutlet连接到应用程序的主ViewController中,我可以将其粘贴到该文件中:

// Inside ViewController.m
- (void)viewDidLoad {
    [super viewDidLoad];
    self.scrollView.bounces = NO;
}

不幸的是,这并不容易,因为我希望只有在touchesBegan被解雇时才会发生这种禁用。

所以我在这里完全难倒:如何让SliderView.m文件与ViewController.m文件通信?

1 个答案:

答案 0 :(得分:0)

使用委托:

<强> SliderView.h

//  SliderView.h
@protocol SliderViewDelegate <NSObject>
@optional
- (void) isScrollViewToBounce:(BOOL)isBounce;
@end

@interface SliderView : UIView
   @property (nonatomic, weak) id <SliderViewDelegate> sliderViewDelegate;
@end

<强> SliderView.m

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.sliderViewDelegate isScrollViewToBounce:NO];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.sliderViewDelegate isScrollViewToBounce:YES];
}

<强> ViewController.m

#import "SliderView.h"
@interface ViewController () <SliderViewDelegate>
@end

viewDidLoad()方法

- (void)viewDidLoad {
   [super viewDidLoad];
   self.sliderView setSlideViewDelegate:self];
}

在ViewController中创建Delegate方法:

- (void) isScrollViewToBounce:(BOOL)isBounce {
    self.scrollView.bounces = isBounce;
}

另外请不要忘记删除委派

#pragma mark Memory management methods

//---------------------------------------------------------------

- (void)dealloc {
   // Release resources here.
   [self.scrollView setSliderViewDelegate:nil]
}