如何让几个按钮全部转到同一个视图控制器?

Sha*_*waz 7 iphone storyboard ios ios5

我是iOS和故事板的新手,我需要一些关于设计新应用程序架构的可能方法的建议.我将在数据库中保存一些数据,我将有一个UIViewController页面,其中只有一些按钮,这些按钮具有某些类别的名称.当我们点击"全部"或点击"商家"时,它会根据该类别将数据显示到UITableViewController.

现在我对一部分感到困惑:

  1. 故事板是否允许从不同的按钮创建多个segue到同一个ViewController类?因此,如果不允许这样做,我是否必须创建6个不同的UITableViewController类来为6个类别创建segue?

  2. 如果允许从多个按钮到单个UIViewController的segue,我如何在storyboard中发送一个参数,让它意识到我点击了一个特定的按钮转到UIViewController.

我应该在UITableViewController中创建一个自定义构造函数,它接受一个参数,我将从其他按钮单击方法初始化该构造函数?那么它在类别方面显示结果?或者有没有一种方式故事板更容易做到这一点?

Cal*_*leb 9

  1. 当然,你可以做到这一点.

  2. 创建完所有按钮后,控制 - 从每个按钮拖动到下一个视图控制器并创建(例如)"推"segue.接下来,单击segue图形以选择segue.切换到属性检查器并为segue提供标识符,例如"全部"或"业务".您可以在-prepareForSegue:方法中查看segue的标识符,以确定哪个segue导致了转换,从而显示了要显示的类别.

不过,我不建议采用这种方法.没有必要创建六个所有完全相同的segue.我会使用一个触发单个segue的动作:

  • tag每个按钮的属性设置为唯一值,以便区分按钮.

  • 向第一个视图控制器(管理按钮的控制器)添加一个动作方法-(IBAction)switchToCategoryFromButton:(id)sender.

  • 将所有按钮连接到该单个操作.

  • 实现动作,使其查看sender.tag按下哪个按钮,使用它来确定要加载的类别,然后以编程方式触发一个 segue到下一个视图控制器.

由一个动作触发的单个segue似乎比许多segues更整洁.执行此操作的代码可能如下所示:

- (IBAction)switchToCategory:(UIControl*)sender
{
    // map the tapped button to a category
    switch (sender.tag) {
        case kAllButton: {
            self.category = kAllCategories;
            break;
        }
        case kBusinessButton: {
            self.category = kBusinessCategory;
            break;
        }
        default: {
            self.category = kAllCategories;
            break;
        }
    }

    // start the segue
    [self performSegueWithIdentifier:kCategorySegue sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // tell the destination view controller what category to display
    if ([segue.identifier isEqualToString:kCategorySegue]) {
        [(NextViewController*)segue.destinationViewController setCategory:self.category];
    }
}
Run Code Online (Sandbox Code Playgroud)