Storyboardのsegueでパラメタ受け渡したった
6084 ワード
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);
}
Author And Source
この問題について(Storyboardのsegueでパラメタ受け渡したった), 我々は、より多くの情報をここで見つけました https://qiita.com/toguri/items/6eba4e57dffa993b4933著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .