1

我有一个带有普通视图的视图控制器。在那个视图中,我有 4 个子视图。我需要每个人对UISwipeGestureRecognizer. 我将视图连接到UISwipeGestureRecognizerInterface Builder 中,并将视图连接UISwipeGestureRecognizerIBAction. 一切都很好;他们都对UISwipeGestureRecognizer.

但是,我需要采取行动来做一些不同的事情,具体取决于名为IBAction. 我应该怎么办?这是IBAction代码:

- (IBAction)swipe:(UISwipeGestureRecognizer *)sender
{
    switch (view)
    {
        case view1:
            //do something
            break;

        case view2:
            //do something
            break;

        case view3:
            //do something
            break;

        default:
        //do something
        break;
    }
}

我该如何处理?

4

2 回答 2

1

我会为每个视图分配一个标签。这样,您仍然可以使用 switch 语句将它们区分开来,但不必保留对每个视图的引用。前任:

- (IBAction)tapSignature:(UISwipeGestureRecognizer *)sender
{
    NSLog(@"swiped");

    switch (sender.view.tag)
    {
        case 1:
            NSLog(@"1");
            break;

        case 2:
            NSLog(@"2");
            break;

        case 3:
            NSLog(@"3");
            break;

        default:
            NSLog(@"4");
            break;
    }
}
于 2013-08-10T21:51:10.740 回答
0
- (IBAction)swipe:(UISwipeGestureRecognizer *)sender
{
    if (sender.view == view1) {
        //do something
    }
    if (sender.view == view2) {
        //do something
    }
    if (sender.view == view3) {
        //do something
    }
}

不要把简单的事情复杂化。此外,如果您想将同一个控制器与另一个 nib 重用,使用标签将迫使您在另一个 nib 中定义相同的标签,这是不好的设计。

于 2013-08-10T22:23:59.253 回答