我是iOS和故事板的新手,我需要一些关于设计新应用程序架构的可能方法的建议。我将在数据库中保存一些数据,我将有一个UIViewController页面,其中只有一些按钮,这些按钮具有某些类别的名称。当我们点击“全部”或点击“商家”时,它会根据该类别将数据显示到UITableViewController。
现在我对一部分感到困惑:
在故事板中是否允许从不同的按钮创建多个segue到同一个ViewController类?因此,如果不允许这样做,我是否必须创建6个不同的UITableViewController类来为6个类别创建segue?
如果允许从多个按钮到单个UIViewController进行segue,我如何在storyboard中发送一个参数,让它意识到我点击了一个特定按钮转到UIViewController。
我应该在UITableViewController中创建一个带有参数的自定义构造函数,我将从其他按钮单击方法初始化该构造函数吗?那么它在类别方面显示结果?或者说故事板是否更容易实现这一目标?
答案 0 :(得分:8)
当然,你可以这样做。
创建所有按钮后,从每个按钮控制拖动到下一个视图控制器并创建(例如)“推”segue。接下来,单击segue图形以选择segue。切换到属性检查器并为segue提供标识符,例如“全部”或“业务”。您可以在-prepareForSegue:
方法中查看segue的标识符,以确定哪个segue导致转换,从而显示哪个类别。
将每个按钮的tag
属性设置为唯一值,以便区分按钮。
向您的第一个视图控制器(管理按钮的控制器)添加一个操作方法,其名称类似于-(IBAction)switchToCategoryFromButton:(id)sender
。
将所有按钮连接到该单个操作。
实施操作,使其查看sender.tag
以确定按下了哪个按钮,使用该按钮确定要加载的类别,然后触发一个 segue下一个视图控制器以编程方式。
由一个动作触发的单个segue似乎比许多segue更整洁。执行此操作的代码可能如下所示:
- (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];
}
}
答案 1 :(得分:1)
使用
self.performSegueWithIdentifier(“yourViewSegue”,发件人:发件人)在您的活动下处理按钮的点击:
@IBAction func redButtonClicked(sender: AnyObject) { self.performSegueWithIdentifier("redView", sender: sender) }
redView是segue标识符。
您可以使用相同的功能进行按钮事件处理&可以通过为按钮触摸分配不同的标签来区分按钮触摸。