• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - Objective-C 以编程方式呈现模态序列

[复制链接]
菜鸟教程小白 发表于 2022-12-13 09:37:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在我的 Storyboard中创建了一个现在的模态序列,如下图所示。

enter image description here

我的第一个场景有一个带有 Action 的按钮:

- (IBAction)loginButtonPressedid)sender {
    [self Login];
}

进入这个方法:

- (void)Login
{
    NSString *rawString = [self.idTextField text];
    NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
    [self.idTextField setText:[rawString stringByTrimmingCharactersInSet:whitespace]];
    [userName UserLogin:self.idTextField.text andPassWordExists:self.passwordTextField.text completionHandler:^(id responseObject, NSError *error) {
        if (responseObject != nil) {
            NSString *userN,*name;
            NSArray *object = [responseObject objectAtIndex:0];
            userN = [object valueForKey"userName"];
            name = [object valueForKey"name"];

            self.idTextField = nil;
            self.passwordTextField = nil;
            LHAppDelegate *appDelegate = (LHAppDelegate *)[[UIApplication sharedApplication] delegate];
            [appDelegate.loginSession setString:[userN lowercaseString]];
            [appDelegate.nameOfUser setString:name];

        }else{


            [self CustomAlert"Sorry Login Failed, User and/or Passsword Incorrect"];

        }
        [indicatorView stopAnimating];
        [indicatorView removeFromSuperview];
        indicatorView = nil;
        [loadingView removeFromSuperview];
        loadingView = nil;

    }];

}

我正在尝试做的是编程,因此当用户登录时,它们会以模态方式出现在标签栏 Controller 中。

目前,当我点击带有错误凭据的按钮时,我会看到我的自定义警报,但它仍然会将我带到标签栏 Controller 。

基本上我想做的是围绕当前的模态转义设置一个条件。这可能吗?

我找到了这段代码:

[self performSegueWithIdentifier: @"MySegue"sender: self];

我将它添加到我的登录方法中:

- (void)Login
{
    NSString *rawString = [self.idTextField text];
    NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
    [self.idTextField setText:[rawString stringByTrimmingCharactersInSet:whitespace]];
    [userName UserLogin:self.idTextField.text andPassWordExists:self.passwordTextField.text completionHandler:^(id responseObject, NSError *error) {
        if (responseObject != nil) {
            NSString *userN,*name;
            NSArray *object = [responseObject objectAtIndex:0];
            userN = [object valueForKey"userName"];
            name = [object valueForKey"name"];

            self.idTextField = nil;
            self.passwordTextField = nil;
            LHAppDelegate *appDelegate = (LHAppDelegate *)[[UIApplication sharedApplication] delegate];
            [appDelegate.loginSession setString:[userN lowercaseString]];
            [appDelegate.nameOfUser setString:name];

            [self performSegueWithIdentifier: @"MySegue" sender: self];

        }else{


            [self CustomAlert"Sorry Login Failed, User and/or Passsword Incorrect"];

        }
        [indicatorView stopAnimating];
        [indicatorView removeFromSuperview];
        indicatorView = nil;
        [loadingView removeFromSuperview];
        loadingView = nil;

    }];

}

当我使用错误的凭据登录时,它仍然会将我带到标签栏 Controller



Best Answer-推荐答案


在上述场景中,它将始终执行不受服务器响应影响的 segue,因为 segue 是通过按钮单击执行的。 为避免这种情况,请按以下方式进行:

  1. 删除从按钮到 UITabBarController 的 segue 并使其 从 View Controller 到 UITabBarController(从 View 拖动 Controller 到其他 View Controller )。
  2. 现在,当您响应成功时,请调用以下电话

    [self performSegueWithIdentifier"segueIdentifier"sender:self]

如果要传递参数,请执行以下功能:

-(void)prepareForSegueUIStoryboardSegue *)segue senderid)sender

关于ios - Objective-C 以编程方式呈现模态序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31858751/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap