確かに、あなたはそれを行うことができます。
すべてのボタンを作成したら、controlキーを押しながら各ボタンから次のView Controllerにドラッグし、(たとえば)「プッシュ」セグエを作成します。次に、セグエのグラフィックをクリックしてセグエを選択します。属性インスペクターに切り替えて、segueに「All」や「Business」などの識別子を付けます。メソッド内のセグエの識別子を調べて、-prepareForSegue:
どのセグエが遷移を引き起こしたか、したがってどのカテゴリを表示するかを判断できます。
ただし、そのアプローチはお勧めしません。すべてがまったく同じことを行う半ダースのセグエを作成する必要はありません。代わりに、単一のセグエをトリガーするアクションを使用します。
各ボタンのプロパティを一意の値に設定してtag
、ボタンを区別できるようにします。
のような名前のアクションメソッドを最初のViewController(ボタンを管理するもの)に追加します-(IBAction)switchToCategoryFromButton:(id)sender
。
すべてのボタンをその単一のアクションに接続します。
sender.tag
どのボタンが押されたかを確認し、それを使用してロードするカテゴリを決定し、プログラムで次のビューコントローラへの1つのセグエをトリガーするようにアクションを実装します。
アクションによってトリガーされる単一のセグエを持つことは、多くのセグエよりもはるかにきれいに思えます。これを行うためのコードは次のようになります。
- (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];
}
}