NSE*_*ion 5 iphone soap web-services objective-c uitabbarcontroller
我在如何从"TabBarViewController"注销到"UIViewController"时遇到问题.首先我从UIViewController页面登录(使用SOAP Web服务+ XML解析),如果userId和Password是正确的,那么在数据库中生成'Access Token'并且(在我们的页面中使用XML解析收集变量)并加载TabBarViewController (用户个人资料页面).现在登录后我想要"LogOut".在个人资料页面上,我放置了一个名为"Logout"的按钮.
现在,我需要你的帮助如何使用'Access Token'(在成功记录期间生成)LogOut,以便我转回LogIn页面agian ?????
下面是我在UITextField中输入"用户ID"和"密码"后按"登录"按钮时运行的代码:
-(IBAction)Login{
txtuser.text = @"test";
txtpwd.text = @"test";
if([txtuser.text isEqualToString:@"" ]|| [txtpwd.text isEqualToString:@""])
{
UIAlertView *myAlert = [[UIAlertView alloc]
initWithTitle:nil message:@"Please fill all fields" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[myAlert show];
[myAlert release];
}
else
{
md5 =[txtpwd text];
//Calling MD5 Method to Convert password into "hashcode"(Hexadecimal) formate
md5 = [md5 MD5];
NSLog(@"%@",md5);
itmselected =FALSE;
Run Code Online (Sandbox Code Playgroud)
//调用Web服务方法
NSString *soapmessage = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
"<soap:Body>\n"
"<Login xmlns=\"http://boleapp.com/\">\n"
"<UserName>%@</UserName>\n"
"<PassHash>%@</PassHash>\n"
"</Login>\n"
" </soap:Body>\n"
" </soap:Envelope>\n",[txtuser text],md5];
NSLog(@"%@",soapmessage);
NSURL *url = [NSURL URLWithString:@"http://weibotest.dotnetgeekz.com/servicemain.asmx"];
NSMutableURLRequest *req = [[NSMutableURLRequest alloc]initWithURL:url];
NSString *msglength = [NSString stringWithFormat:@"%d",[soapmessage length]];
[req addValue:@" text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[req addValue:@"http://boleapp.com/Login" forHTTPHeaderField:@"SOAPAction"];
[req addValue:msglength forHTTPHeaderField:@"Content-Length"];
[req setHTTPMethod:@"POST"];
[req setHTTPBody:[soapmessage dataUsingEncoding:NSUTF8StringEncoding]];
[NSURLConnection connectionWithRequest:req delegate:self];
webadata = [[NSMutableData alloc]init];
[txtuser resignFirstResponder];
[txtpwd resignFirstResponder];
}
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[webadata appendData:data];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
NSLog(@"error");
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
xmlparser = [[NSXMLParser alloc]initWithData:webadata];
[xmlparser setDelegate:self];
[xmlparser parse];
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if([elementName isEqualToString:@"Login"])
soapresult = [[NSMutableString alloc]init];
itmselected = YES;
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if(itmselected){
NSLog(@"Bool value and Access Token Number and UserID= %@",string);
if([string isEqualToString:@"false"]){
[invaliduser setImage:[UIImage imageNamed:@"invalid_username.png"]];
}
else{
NSArray* splits = [string componentsSeparatedByString: @","];
NSString *strbool = [splits objectAtIndex:0];
NSString *strAtoken = [splits objectAtIndex:1];
id UserIdLogin = [splits objectAtIndex:2];
if ([strbool isEqualToString:@"true"]){
main.strAccessTokenMain = strAtoken;
main.UserIdMain = UserIdLogin;
NSLog(@"strAccessTokenMain = %@",[main strAccessTokenMain]);
// Calling "showtabbar" method for Loading TabBarViewController page
[main showtabbar];
}
}
[soapresult appendString:string];
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if([elementName isEqualToString:@"LoginResult"]){
itmselected = NO;
}
}
Run Code Online (Sandbox Code Playgroud)
//"showtabbar"方法用于启动TabBarViewController
- (无效)showtabbar {
//Removing UIViewController's 'Login' page
[self.view removeFromSuperview];
[BoleApp release];
NSLog(@"userID = %@",UserIdMain);
tabbarcontroller = [[UITabBarController alloc]init ];
//Creating Object of "Profile" Class for Launching as First tab of TabBarViewController
profile *view1 = [[profile alloc]initWithNibName:@"profile" bundle:nil ];
view1.strAccessToken = strAccessTokenMain;
view1.UserIdProfile = UserIdMain;
NSLog(@"view1str = %@",view1.strAccessToken);
view1.title = @"Profile";
view1.tabBarItem.image = [UIImage imageNamed:@"profile.png"];
//Second Tab of TabBarViewController
Brandslist *view2 = [[Brandslist alloc]init];
view2.BrandAccToken = strAccessTokenMain;
view2.UserIdBrndList = UserIdMain;
Instruction *view3 = [[Instruction alloc]init];
settings *view4 = [[settings alloc]init];
view2.title = @"Brands";
view2.tabBarItem.image = [UIImage imageNamed:@"brands.png"];
// Third Tab of TabBarViewController
view3.title = @"Info";
view3.tabBarItem.image = [UIImage imageNamed:@"info.png"];
// Fourth Tab of TabBarViewController
view4.title = @"Settings";
view4.tabBarItem.image = [UIImage imageNamed:@"settings.png"];
view4.AccessToken = strAccessTokenMain;
view4.user_ID = UserIdMain;
[tabbarcontroller setViewControllers:[NSArray arrayWithObjects:view1,view2,view3,view4, nil]];
[mainWindow addSubview:tabbarcontroller.view];
Run Code Online (Sandbox Code Playgroud)
}
这是我的个人资料页面的"Logout"方法,我想编写用于从Profile页面登出到Login页面的代码(UIViewController)
-(IBAction)Logout{
NSLog(@"Logout Button Clicked !!!");
// What to code here for resuming back to Login page ????? Please Help me out
?
?
?
}
Run Code Online (Sandbox Code Playgroud)
朋友们,请退回来.非常感谢您的帮助.谢谢,Tauseef Khan
而不是使用,[mainWindow addSubview]使用mainWindow.rootViewController = tabbarcontroller;
这样,当按下注销按钮时,您只需要添加如下内容:
mainWindow.rootViewController = loginViewController;
Run Code Online (Sandbox Code Playgroud)
使用此功能,您只需更改主窗口上显示的视图控制器,并且可以在新登录后以相同的方式再次切换到选项卡栏控制器。
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |