【发布时间】:2011-03-21 18:35:07
【问题描述】:
我有一个视图,我正在模态显示以从用户那里获取登录信息。我有以下设置:
- 视图控制器是
UITableViewController - 该表包含三个单元格:用户名和密码字段(
UITableViewCell中的类型均为UITextField)和一个简单的单元格作为登录按钮。 - 值从
UITextField中的textFieldDidEndEditing:message 读取 - 文本字段由不同的标记值标识。
问题
我的问题是,当焦点位于UITextField 并且用户触摸登录按钮时,相应的UITextField 的textFieldDidEndEditing: 消息在didSelectRowAtIndexPath: 之后发送。现在这里的问题是我正在向didSelectRowAtIndexPath: 中的LoginViewControllerDelegate 发送新用户凭据的消息,当时尚未读取文本字段的值。
一些想法
我有一些如何解决这个问题的想法,但我对每个想法都有疑虑。
首先,我可以关闭登录视图并在关闭期间通知委托,但我想给委托(拥有此登录视图的人)完全控制权,我认为关闭登录应该是委托的工作查看成功登录(登录视图仅读取凭据,委托验证这些)。
其次,我还可以在调用代理之前读取用户名或密码,但随后我必须查找文本字段。如果视图不可见,我认为假设单元格确实存在是错误的。这只是一个很大的假设,但我不想让它正确。保留UITextFields 可以吗?但是,这样一来,我就不能使用一些本身会提供文本字段的自定义单元格。
基本上我想要以下内容:
- 检测到需要(有效)用户凭据,弹出登录视图
- 用户输入用户名和密码并调用完成。
- 委托验证这些凭据。如果它们不起作用,则会显示一条消息并再次尝试第 2 步。
- 凭据没问题,所以关闭登录视图并继续。
【问题讨论】:
标签: cocoa-touch uitableview uitextfield