【问题标题】:textfield and tableview cell to active button in navigation bar文本字段和表格视图单元格到导航栏中的活动按钮
【发布时间】:2013-06-30 22:07:39
【问题描述】:
1.在Facebook iOS应用中,当打开一个新帖子但没有输入任何内容时,右上角的帖子按钮是无效的。输入任何内容后,它将立即激活。如何实现该效果?
2.我想制作一个页面有很多标签名称作为单元格内容,用户可以选择一些标签来过滤内容。基本上,有两个部分,选定部分和未选定部分。当用户触摸未选择部分中的单元格时,它将飞到选定部分。我希望只有在选定部分中至少有一个单元格时才激活右上角的 GO 按钮(最初,所有标签名称都在未选定部分中)。那么如何实现让tableview单元格影响导航栏的GO按钮呢?谢谢!
【问题讨论】:
标签:
ios
objective-c
uitableview
uitextfield
uinavigationbar
【解决方案1】:
使用以下代码...由代码中的 cmets 解释。
在viewDidLoad
textField.delegate = self; //sets delegate to this file so it calls the method below
在.h 文件中
@interface ViewController : UIViewController <UITextFieldDelegate> //makes it so we can set the delegate
在.m 文件中
- (BOOL) textField:(UITextField *)aTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //method that gets called on edit
if([textField.text length] > 0) { //if contains characters
tabBarButton.enabled = YES; //set enabled
}
else { //if not
tabBarButton.enabled = NO; //set disabled
}
return YES;
}
您必须相应地更改tabBarButton 和textField,因为它们是变量。
【解决方案2】:
您可以使用 UIButton 的enabled 属性来检测按钮何时启用或不启用。
对于 UITextView,可能你有一个可以帮助你的委托方法。从here 读取所有委托方法。例如,您可以使用textViewDidChange:(UITextView *)textView 方法。在其中,只有[textView.text length] 大于 0 时才能启用按钮。
对于第二个答案,您应该有一个模型(可能是一个数组)来存储所选标签。管理按钮状态的正确方法应该是使用KVO,检测每次模型更改并仅在数组中有项目时才启用按钮。另一种方法应该使用在模型中添加或删除项目的相同方法,以正确启用或禁用您的按钮。
对不起,我的英语不好,但我希望这个答案有帮助!