首页 > 代码库 > 私人通讯录功能详细实现
私人通讯录功能详细实现
私人通讯录
一、根据segue对象实现控制器的跳转
//根据segue对象的标示去storyboard找对应的的线
[selfperformSegueWithIdentifier:@"login"sender:nil];//根据segue对象的标示去storyboard找对应的的线
//跳转前控制器之间传值(顺传)
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
SUNContactsController *contacts = segue.destinationViewController;
contacts.navigationItem.title=self.accountF.text;
}
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
SUNContactsController *contacts = segue.destinationViewController;
contacts.navigationItem.title=self.accountF.text;
}
二、如果输入框中没有内容,登录按钮是禁用的。
有两种方法
第一种,通知:
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(textFieldChange)name:UITextFieldTextDidChangeNotificationobject:self.accountF];
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(textFieldChange)name:UITextFieldTextDidChangeNotificationobject:self.pwdF];
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(textFieldChange)name:UITextFieldTextDidChangeNotificationobject:self.pwdF];
- (void)textFieldChange
{
self.loginBtn.enabled= (self.accountF.text.length && self.pwdF.text.length);
}
{
self.loginBtn.enabled= (self.accountF.text.length && self.pwdF.text.length);
}
// 在dealloc方法里面移除通知
- (void)dealloc
{
// 移除通知
[[NSNotificationCenterdefaultCenter]removeObserver:self];
}
{
// 移除通知
[[NSNotificationCenterdefaultCenter]removeObserver:self];
}
第二种方法,addTarget,因为UITextField是继承UIControl
[self.accountFaddTarget:selfaction:@selector(textFieldChange)forControlEvents:UIControlEventEditingChanged];
[self.pwdFaddTarget:selfaction:@selector(textFieldChange)forControlEvents:UIControlEventEditingChanged];
[self.pwdFaddTarget:selfaction:@selector(textFieldChange)forControlEvents:UIControlEventEditingChanged];
- (void)textFieldChange
{
self.loginBtn.enabled = (self.accountF.text.length && self.pwdF.text.length );
}
{
self.loginBtn.enabled = (self.accountF.text.length && self.pwdF.text.length );
}
三、注销按钮功能的实现
- (IBAction)logout
{UIActionSheet *actionSheet = [[UIActionSheetalloc]initWithTitle:@"是否注销"delegate:selfcancelButtonTitle:@"取消"destructiveButtonTitle:@"注销"otherButtonTitles:nil,nil];
[actionSheet showInView:self.view];
}
#pragma mark -实现注销按钮的功能
- (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex ==0) {
// 将栈顶控制器移除
[self.navigationControllerpopToRootViewControllerAnimated:YES];
}
}
[self.navigationControllerpopToRootViewControllerAnimated:YES];
}
}
四、控制器跳转之后,文本框变成第一响应者
- (void)viewDidAppear:(BOOL)animated
{
[self.accountFbecomeFirstResponder];
}
{
[self.accountFbecomeFirstResponder];
}
注意:
viewDidAppear方法表示view显示完毕(已经显示到窗口)
五、控制器之间跳转(逆传值)
//回到联系人列表
[self.navigationControllerpopViewControllerAnimated:YES];
[self.navigationControllerpopViewControllerAnimated:YES];
// 使用代理的方式把一个对象传递给控制器
5.1 首先定义一个代理
@protocolSUNAddContactsControllerDelegate <NSObject>
- (void)addContactsController:(SUNAddContactsController*)addContactsController didContactsItem:(SUNContactsItem*)contactsItem;
@end
- (void)addContactsController:(SUNAddContactsController*)addContactsController didContactsItem:(SUNContactsItem*)contactsItem;
@end
5.2 然后把对象传递给控制器
SUNContactsItem*contactsItem = [[SUNContactsItemalloc]init];
contactsItem.account=self.account.text;
contactsItem.pwd=self.pwd.text;
if([self.delegaterespondsToSelector:@selector(addContactsController:didContactsItem:)]) {
[self.delegateaddContactsController:selfdidContactsItem:contactsItem];
}
SUNContactsItem*contactsItem = [[SUNContactsItemalloc]init];
contactsItem.account=self.account.text;
contactsItem.pwd=self.pwd.text;
if([self.delegaterespondsToSelector:@selector(addContactsController:didContactsItem:)]) {
[self.delegateaddContactsController:selfdidContactsItem:contactsItem];
}
5.3 在控制器实现代理的方法
#pragma mark -实现SUNAddContactsControllerDelegate的代理
- (void)addContactsController:(SUNAddContactsController*)addContactsController didContactsItem:(SUNContactsItem*)contactsItem
{
[self.arrayMaddObject:contactsItem];
[self.tableViewreloadData];
}
- (void)addContactsController:(SUNAddContactsController*)addContactsController didContactsItem:(SUNContactsItem*)contactsItem
{
[self.arrayMaddObject:contactsItem];
[self.tableViewreloadData];
}
5.4 如果两个控制器之间跳转通过segue对象,在prepareForSegue这个方法里面判断一下
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
if ([segue.destinationViewControllerisKindOfClass:[SUNAddContactsControllerclass]]) {
SUNAddContactsController *addContactsController = segue.destinationViewController;
addContactsController.delegate=self;
}
}
{
if ([segue.destinationViewControllerisKindOfClass:[SUNAddContactsControllerclass]]) {
SUNAddContactsController *addContactsController = segue.destinationViewController;
addContactsController.delegate=self;
}
}
私人通讯录功能详细实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。