【问题标题】:How to stop push button [duplicate]如何停止按钮[重复]
【发布时间】:2014-02-17 19:28:33
【问题描述】:

我是开发iOS程序的新手,我需要你的帮助。

当我点击按钮时,我的代码会检查一个条件,如果条件为真,我想访问下一个UIViewController 使用prepareForSegue 传递数据,但如果条件是FALSE,我不'不想访问下一个VC 并停留在当前的VC

我该怎么做?

当我点击我的按钮时,我直接访问下一个VC,无论IBAction 中的代码是什么。是否可以阻止访问?

我尝试在按钮上编写代码

- (IBAction)lancepartie:(id)sender {
...

【问题讨论】:

  • 请展示整个方法
  • 没什么用的...这只是我的条件。
  • 你的故事板中的按钮是否同时有一个转场和这个动作?
  • 在 StackOverflow.com 上发布问题之前,您可能需要先做一些教程...这是 iOS 编码 101,几乎是您通过拿起一本书学到的第一件事关于 iOS 开发。

标签: ios objective-c


【解决方案1】:

其他答案应该有效,但它们有点忽略了转场的全部意义:您不必为转场之类的按钮手动设置操作。相反,您应该覆盖 - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender 选择器。

为此,您需要从 Interface Builder 中为您的 segue 提供一个标识符,然后将此代码添加到您的父 ViewController 中:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString*)identifier sender:(id)sender
{
    if ([identifier isEqualToString:@"MyIdentifier"])
    {
        return someCondition;
    }
    else return YES;
}

【讨论】:

    【解决方案2】:
    - (IBAction)lancepartie:(id)sender {
        BOOL someConditionHasBeenMet = NO;
        // check condition
        if (someConditionHasBeenMet) {
             // push view controller
        } else {
             // nothing
        }
    }
    

    【讨论】:

    • // 推送视图控制器我该怎么做? newt VC 的启动是自动的,不是吗?
    【解决方案3】:

    试试这个代码

    - (IBAction)lancepartie:(id)sender
    {
        if(Your_Condition_Is_True){
            [self performSegueWithIdentifier:@"Your_Segue_Identifier" sender:sender];
        }
        else {
            //do not switch controller
        }
    }
    
    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if ([[segue identifier] isEqualToString:@"Your_Segue_Identifier"]) {
    
        }
    }
    

    【讨论】:

    • 我如何编程为“不切换控制器”?
    • 如果您的条件为假,以下代码将不会发生任何事情。只是不要在 else 块中编写任何代码。简单
    猜你喜欢
    • 2021-11-08
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 2019-10-10
    相关资源
    最近更新 更多