gpt4 book ai didi

ios - UINavigationBar 按钮未按正确的逻辑禁用和启用

转载 作者:行者123 更新时间:2023-11-29 03:03:07 25 4
gpt4 key购买 nike

我有一个简单的应用程序,用户将信息输入到一系列 UITextFields 和一些其他组件中,以便应用程序填充信息。

我有 4 个 UITextFields(名称、事件、子事件和金额)、1 个 UITextView(注释)、一个 UIDatePicker 和一个 UISegmentedControl(状态)。

名称、事件、金额和状态为必填项,其中子事件和注释为可选。

如果未填写必填字段,我已经添加了一些逻辑来禁用“保存”BarButtonItem;但是我注意到我的逻辑无法正常工作。

逻辑是这样的:

- (void) checkTextFields
{
if (([self.nameTextField.text length] != 0 && [self.itemTextField.text length] != 0 && [self.occasionTextField.text length] != 0 && [self.isReceivedSegment selectedSegmentIndex] == 0) || [self.isReceivedSegment selectedSegmentIndex] == 1)
{
NSLog(@"This shouldn't be run if not every field is filled in");
self.saveButton.enabled = TRUE;
}
else
{
NSLog(@"Run");
self.saveButton.enabled = FALSE;
}
}

我从 viewDidLoad 调用它:

self.saveButton.enabled = FALSE;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkTextFields) name:UITextFieldTextDidChangeNotification object:nil];

[self.isReceivedSegment addTarget:self action:@selector(checkTextFields) forControlEvents:UIControlEventValueChanged];

问题

问题是:如果我在 SegmentedControl 中输入名称、事件并选择一个段,则不应启用“保存”按钮,因为未填写“金额”。

如果我输入名称、金额并选择一个段,则同样适用,不应填写“保存”按钮,因为未填写“事件”,但在这两种情况下都是如此。

我是否漏掉了一些明显的东西?

最佳答案

试试这个:

- (void) checkTextFields
{
if ([self.nameTextField.text length] != 0 && [self.itemTextField.text length] != 0 && [self.occasionTextField.text length] != 0 && ([self.isReceivedSegment selectedSegmentIndex] == 0 || [self.isReceivedSegment selectedSegmentIndex] == 1))
{
NSLog(@"This shouldn't be run if not every field is filled in");
self.saveButton.enabled = TRUE;
}
else
{
NSLog(@"Run");
self.saveButton.enabled = FALSE;
}
}

根据您实现条件的方式(带括号),当您的 selectedSegmentIndex = 1 时,无论其他条件如何,它将评估为 true。像这样在括号中移动应该可以。

请注意,我已将括号移动到包围条件的 OR 部分。

编辑将这些行添加到您的 View 确实加载方法中,以便在编辑任何文本字段后检查表单。

[nameTextField addTarget:self action:@selector(checkTextFields) forControlEvents:UIControlEventEditingChanged];

[itemTextField addTarget:self action:@selector(checkTextFields) forControlEvents:UIControlEventEditingChanged];

[occasionTextField addTarget:self action:@selector(checkTextFields) forControlEvents:UIControlEventEditingChanged];

关于ios - UINavigationBar 按钮未按正确的逻辑禁用和启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23086085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com