标签:私人通讯录
私人通讯录
一、根据segue对象实现控制器的跳转
//根据segue对象的标示去storyboard找对应的的线
[selfperformSegueWithIdentifier:@"login"sender:nil];
//跳转前控制器之间传值(顺传)
- (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];
- (void)textFieldChange
{
self.loginBtn.enabled=
(self.accountF.text.length
&&
self.pwdF.text.length);
}
// 在dealloc方法里面移除通知
- (void)dealloc
{
//
移除通知
[[NSNotificationCenterdefaultCenter]removeObserver:self];
}
第二种方法,addTarget,因为UITextField是继承UIControl
[self.accountFaddTarget: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 );
}
三、注销按钮功能的实现
- (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];
}
}
四、控制器跳转之后,文本框变成第一响应者
- (void)viewDidAppear:(BOOL)animated
{
[self.accountFbecomeFirstResponder];
}
注意:
viewDidAppear方法表示view显示完毕(已经显示到窗口)
五、控制器之间跳转(逆传值)
//回到联系人列表
[self.navigationControllerpopViewControllerAnimated:YES];
// 使用代理的方式把一个对象传递给控制器
5.1 首先定义一个代理
@protocolSUNAddContactsControllerDelegate <NSObject>
- (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];
}
5.3 在控制器实现代理的方法
#pragma mark -实现SUNAddContactsControllerDelegate的代理
- (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;
}
}
私人通讯录功能详细实现
标签:私人通讯录
原文地址:http://blog.csdn.net/itcontend/article/details/41835085