0

我的要求是,如果我点击 button1 相应的图像必须通过滑动手势进入下一个视图,因此我将发送者值发送到子视图控制器

viewcontroller.m

-(IBAction)cricket:(id)sender

{

  //cricket is a button
   NSString *str=[cricket currentTitle];
  ChildViewController *child=[[ChildViewController alloc]init];
   [child handleSwipe:str];

}

这是

childviewcontroller.m

int imageIndex=4;
 - (IBAction)handleSwipe:(UISwipeGestureRecognizer *)sender 
 {
    if([sender isEqual:@"cricket"]))
{

    NSArray *images=[[NSArray alloc]initWithObjects:[UIImage imageNamed:@"exterior1.png"],      [UIImage imageNamed:@"cricket.png"],[UIImage imageNamed:@"floor_plan1.png"],Nil];
    UISwipeGestureRecognizerDirection direction=[(UISwipeGestureRecognizer *)sender direction];

    switch (direction) {
        case UISwipeGestureRecognizerDirectionLeft:
            imageIndex++;
            break;
        case UISwipeGestureRecognizerDirectionRight:
            imageIndex--;
        default:
            break;
    }
    imageIndex=(imageIndex<0) ? ([images count]-1):
    imageIndex % [images count];
    [images objectAtIndex:imageIndex];

}

我对这件事很震惊,请帮助我

4

2 回答 2

0

我不太明白您要做什么,但是您的代码有很多问题,让我从这里开始:

NSString *str= [arr objectAtIndex:0];

您正在从数组中获取第一个对象并将其放在 a 中,NSString但它实际上是一个UIImage.

然后在你childviewcontroller.m检查发件人是否等于另一个UIImage但这里的等号将检查指针,因为[UIImage imageNamed:]通常会返回一个缓存的图像,这可能会起作用。但它可能不会。

您将其投射senderUISwipeGestureRecognizer

UISwipeGestureRecognizerDirection direction=[(UISwipeGestureRecognizer *)sender direction];

但是,如果您正在检查发件人是否是UIImage,然后您将其转换为UISwipeGestureRecognizer. 事实并非如此。你的代码崩溃了。

然后你这样做:

img.image=[UIImage imageNamed:[images objectAtIndex:imageIndex]];

返回的对象[images objectAtIndex:imageIndex]已经是 aUIImage并且在这种情况下[UIImage imageNamed:[images objectAtIndex:imageIndex]]将始终返回。nil您可以使用:

img.image= [images objectAtIndex:imageIndex];

我建议您重写代码以仅使用字符串而不使用UIImage对象,因为它们占用更多内存。然后最后一步用imageNamed:方法加载图像。

于 2013-08-29T10:10:29.560 回答
0

direction不是一种getter方法唯一setter的方法,这就是应用程序崩溃的原因。

在这里(UISwipeGestureRecognizer *)sender,一旦检查您的代码,它就会提供图像视图对象。

Edit:-

我们可以使用方向属性为 UISwipeGestureRecognizer 设置方向。如果您尝试像这样 _swiper.direction == UISwipeGestureRecognizerDirectionLeft 每次它都是错误的,因为在这里您试图获取方向但它不起作用。

为了识别滑动方向,您可以为不同的方向添加不同的手势。方向属性仅定义被识别为滑动的允许方向,而不是特定滑动的实际方向。

UISwipeGestureRecognizer *leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFromLeft)];
[leftRecognizer setDirection: UISwipeGestureRecognizerDirectionLeft];
[[self view] addGestureRecognizer:leftRecognizer];
[leftRecognizer release];

UISwipeGestureRecognizer *rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFromRight)];
[rightRecognizer setDirection: UISwipeGestureRecognizerDirectionRight];
[[self view] addGestureRecognizer:rightRecognizer];
[rightRecognizer release];
EDIT:

-(void)handleSwipeFromRight{
NSLog(@"swipe from right");
}
and

-(void)handleSwipeFromLeft{
NSLog(@"swipe from Left");
}
于 2013-08-29T09:54:08.513 回答