iOS7が出た以降、新規プロジェクトを起こすときは、
SBを使うようにしていて、その辺のメモ。
performSegueWithIdentifierする時に、
もっと色々と渡せたらいいのにー。
遷移方法
Storyboardから遷移先に引いたpush(例えば)の線にIDを設定し、
そのIDを使って、下記実装をすれば遷移可能
FirstViewController.m
- (void) openChatView
{
[self performSegueWithIdentifier:@"openChatView" sender:self];
}
おっと本当に遷移していいかチェックしようぜ
FirstViewController.m
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier
sender:(id)sender {
// 仮にテーブルセルを選択して、次画面遷移するとしたら・・・
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
// チェック対象の遷移はこれかな? segueの名前から、チャット系なのかな?
if ([identifier isEqualToString:@"openChatView"]) {
// 選択セルの情報はとれたかな? _chatListはNSArray的なやつで、isEmptyはnil & countチェックメソッドdeath!
if (_chatList.isEmpty || ![_chatList objectAtIndex:indexPath.row]) {
return NO;
}
}
// いくぜ
return YES;
}
遷移時のパラメータ受け渡し方法
渡す時は、UIViewControllerのメソッドをオーバーライドして、
FirstViewController.m
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"openChatView"]) {
SecondViewController *controller = segue.destinationViewController;
controller.name = @"neiraza";
}
}
受け取る側は、プロパティを用意しておけば。
SecondViewController.h
@interface SecondViewController : UIViewController
@property (nonatomic, strong) NSString *name;
@end
SecondViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"name %@", self.name);
}