textfield和tableview单元格导航栏中的活动按钮

时间:2013-06-30 22:07:39

标签: ios objective-c uitableview uitextfield uinavigationbar

1.在Facebook iOS应用程序中,当一个人打开一个新帖子但没有输入任何内容时,右上角的“发布”按钮不活动。一旦输入任何内容,它将立即生效。如何实现这种效果?

2.我想创建一个包含许多标签名称的页面作为单元格内容,用户可以选择一些标签来过滤内容。基本上,有两个部分,选定部分和未选择部分。当用户触摸未选定部分中的单元格时,它将飞到选定的部分。我希望只有在所选部分中至少有一个单元格时才会激活右上角的GO按钮(最初,所有标签名称都在未选择的部分中)。那么如何实现它让tableview单元格影响导航栏中的GO按钮?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用UIButton的enabled属性,并检测何时启用该按钮。

对于UITextView,您可能有一个可以帮助您的委托方法。阅读here中的所有委托方法。例如,您可以使用textViewDidChange:(UITextView *)textView方法。在其中,只有[textView.text length]大于0时才能启用按钮。

对于第二个答案,您应该有一个存储所选标签的模型(可能是一个数组)。管理按钮状态的正确方法应该是使用KVO,每次模型更改时检测,并且只有在数组中有项目时才启用按钮。另一种方法应该是使用与模型中添加或删除项目相同的方法,以正确启用或禁用按钮。

对不起我的英语,但我希望这个答案有所帮助!

答案 1 :(得分:0)

使用以下代码...由代码中的注释解释。

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;
}

您必须相应地更改tabBarButtontextField,因为这些是变量。