如何调用viewController的方法来显示子视图中的新内容?(iOS)

如何调用viewController的方法来显示子视图中的新内容?(iOS),ios,objective-c,Ios,Objective C,我遵循本教程,但很难弄清楚: 更新: 如何通知向左或向右拖动的项目以告知视图控制器显示新的内容,如何基于正在拖动的视图调用视图控制器中的方法?它们是两个独立的文件viewController.m和这个 基于这个手势我该怎么说 GGDraggableView.m #import "GGDraggableView.h" #import "GGOverlayView.h" @interface GGDraggableView () @property(nona

我遵循本教程,但很难弄清楚:

更新:

如何通知向左或向右拖动的项目以告知视图控制器显示新的内容,如何基于正在拖动的视图调用视图控制器中的方法?它们是两个独立的文件viewController.m和这个

基于这个手势我该怎么说 GGDraggableView.m

#import "GGDraggableView.h"
#import "GGOverlayView.h"

@interface GGDraggableView ()
@property(nonatomic, strong) UIPanGestureRecognizer *panGestureRecognizer;
@property(nonatomic) CGPoint originalPoint;
@property(nonatomic, strong) GGOverlayView *overlayView;
@end

@implementation GGDraggableView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (!self) return nil;

    self.panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(dragged:)];
    [self addGestureRecognizer:self.panGestureRecognizer];

    self.overlayView = [[GGOverlayView alloc] initWithFrame:self.bounds];
    self.overlayView.alpha = 0;
    [self addSubview:self.overlayView];

    return self;
}



- (void)dragged:(UIPanGestureRecognizer *)gestureRecognizer
{
    CGFloat xDistance = [gestureRecognizer translationInView:self].x;
    CGFloat yDistance = [gestureRecognizer translationInView:self].y;

    switch (gestureRecognizer.state) {
        case UIGestureRecognizerStateBegan:{
            self.originalPoint = self.center;
            break;
        };
        case UIGestureRecognizerStateChanged:{
            CGFloat rotationStrength = MIN(xDistance / 320, 1);
            CGFloat rotationAngel = (CGFloat) (2*M_PI/16 * rotationStrength);
            CGFloat scaleStrength = 1 - fabsf(rotationStrength) / 4;
            CGFloat scale = MAX(scaleStrength, 0.93);
            CGAffineTransform transform = CGAffineTransformMakeRotation(rotationAngel);
            CGAffineTransform scaleTransform = CGAffineTransformScale(transform, scale, scale);
            self.transform = scaleTransform;
            self.center = CGPointMake(self.originalPoint.x + xDistance, self.originalPoint.y + yDistance);

            [self updateOverlay:xDistance];

            break;
        };
        case UIGestureRecognizerStateEnded: {
            [self resetViewPositionAndTransformations];
            break;
        };
        case UIGestureRecognizerStatePossible:break;
        case UIGestureRecognizerStateCancelled:break;
        case UIGestureRecognizerStateFailed:break;
    }
}
目前我调用该方法的方式是这样的,但我觉得alloc,init新控制器是不正确的,因为这是视图控制器中的一个视图:

这是我在GGDraggableView.m文件中的尝试:

RandomViewController *rVC = [[RandomViewController alloc]init];
            [rVC displayNewInfo];

不能在视图内部使用viewcontroller的属性。因此,如果要将图像添加到imageview中,应该在
GGDraggableView
中为该imageview创建memebr变量。将此
GGDraggableView
添加到viewDidLoad或通过XIB/情节提要中的viewcontroller.view。现在通过引用图像将其指定给imageView,如
gdraggbleview.imageView.image=pics[0]

我的道歉我上次的回复犯了一个大错

这里要使用的是一个委托来更新ViewController

GCDraggableView.h

@protocol GCDraggableViewDelegate <NSObject>

-(void)GCDraggableView:(id)draggableView dragged:(UIPanGestureRecognizer*) gestureRecognizer;

@end

@interface GGDraggableView ()
    @property (weak) id<GCDraggableViewDelegate> delegate;
@end
ViewController.m

- (void)dragged:(UIPanGestureRecognizer *)gestureRecognizer
{
    //Call protocol method on delegate in order to update ViewController
    [self.delegate GCDraggableView:self dragged:gestureRecognizer];
}
-(void)viewDidLoad
{
     GCDraggableView *subview.delegate = self;
}

-(void)GCDraggableView:(id)draggableView dragged:(UIPanGestureRecognizer*) gestureRecognizer
{
    //Whatever you want done when your subview is panned
}

好的,那么我怎么说如果图像是向左或向右滑动以加载图片[1]之后呢?我如何创建一个可调用的方法来设置下一张图片?如果您在视图中添加手势(GdRaggLeView),那么您应该在viewcontroller中委托该方法,并将该图像的索引作为参数传递。好的,因此我在视图控制器中连接了常规视图(我想要滑动的内容)通过序列图像板创建GGDRAGABLE视图,并在代码中创建imageview,现在我正在尝试上述操作,只需imageview.image=pics[0]但是pics是未声明的。我是否必须导入view controller.h文件,因为我也尝试过,但仍然无法访问它。您需要在viewcontroller中创建方法,当拖动视图时将通知该方法。在通知时,您更改了HeImage如何从发出通知调用以通知视图控制器?这就是我所困惑的