我正在开发一个应用程序,用于从我的学校网站获取数据到桌面视图,但要做到这一点,应用程序需要登录。
我一直在尝试通过将数据作为POST发送到登录表单来制作正确的登录系统,但由于某种原因,它不会工作(我之前已经为另一个网站做过,所以它不是因为我不知道如何)
所以现在我只有一个隐藏的uiwebview与loginform并填充用户添加到两个uitextfields ..
但不是将隐藏的uiwebview添加到每个viewcontroller(每当我需要再次登录以获取数据时,如果网站上的会话过期),我真的只想创建一个类来做这个...
我正在考虑类似的事情:class.h
+(BOOL)loginWithUsername(NSString*)username : password(NSString*)password;
class.m
+(BOOL)loginWithUsername(NSString*)username : password(NSString*)password {
//create webview
//populate form on site
// press submitbutton
//wait for - (void)webViewDidFinishLoad:(UIWebView *)webView to finish, where it analyzes if the user was logged in, and if so return true
}
但是如何做呢?
答案 0 :(得分:0)
更好的是使用完成块创建方法
阻止的typedef,不是必需的,但非常有帮助
typedef void(^CompletionHandler)(BOOL success);
在此方法中将完成处理程序保存到本地ivar,如CompletionHandler _handler;
+(BOOL)loginWithUsername(NSString*)username : password(NSString*)password complete:(CompletionHandler)handler;
webViewDidFinishLoad
中的使用
检查登录成功结束校准块if (handler)
{
handler(YES); // or no if login failed
}
在花药控制器中,您可以将其称为
[LoginClass loginWithUsername:@"user" password:@"pass" complete:^(bool success){
if (success)
{
// logged in
}
}];