有时候用storyboard搭建界面时,需要满足一定的条件才让界面往下跳转。比如用storyboard搭建登陆界面时,如果输入的用户名为空,阻止storyboard往下跳转。
比如登陆控制器的核心代码:
#pragma mark - Navigation
/**
* 开始跳转,可以在这个方法中向下一个界面传入参数
*
* @param segue 注意:[segue identifier] 不是storyboard中控制器的identifier,而是segue的identifier
* @param sender sender代表触发跳转事件的控件,这里代表登陆的Button
*/
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSLog(@"===============================>>>>>>>>%@",[segue identifier]);
/*
可以通过segue.sourceViewController获取到下一个界面的引用,然后向下一个界面传入需要的参数
*/
}
/**
* 跳转前时触发,如果返回NO,阻止跳转
* @param identifier identifier代表的是segue的identifier,而不是storyboard中控制器的identifier。 这里的identifier其实与prepareForSegue:sender 方法中的[segue identifier]其实是同一个id
* @param sender sender代表触发跳转事件的控件,这里代表登陆的Button
*
* @return YES 跳转,NO 阻止storyboard跳转
*/
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(nullable id)sender
{
NSLog(@"identifier:%@ sender:%@",identifier,sender);
//阻止跳转
if([identifier isEqualToString:@"LoginSegueId"] && [self.userNameTextField.text length] == 0){
NSLog(@"请输入用户名");
return NO;
}
return YES;
}
要特别注意方法中的identifier: