頻道欄目
首頁 > 資訊 > IOS > 正文

iphone開發我的新浪微博客戶端-用戶登錄OAuth授權認證篇(1.3)

11-06-01        來源:[db:作者]  
收藏   我要投稿

在上一篇中,我們已經完成了UIDialogWindow自定義彈出窗口組件,本篇接下來完成用戶的OAuth授權認證功能,完成后效果如上圖。

      一、新建名為LoginViewController的UIViewController subclass類型的類文件,新進的時候記得勾上With XIB user interface選項.接下來我們要把這個ViewController添加到window進行顯示,繼續往下做。

      二、打開xcode自動創建的MinBlog4SinaAppDelegate.h文件,添加如下代碼:


#import <UIKit/UIKit.h>

@class LoginViewController;

@interface MinBlog4SinaAppDelegate : NSObject <UIApplicationDelegate> {   

 IBOutlet UIWindow *window;   

IBOutlet LoginViewController *loginViewController;

}

@property (nonatomic, retain) IBOutlet UIWindow *window;

@property (nonatomic,retain)IBOutlet LoginViewController *loginViewController;@end     

 三、打開MinBlog4SinaAppDelegate.m文件,添加如下代碼

#import "MinBlog4SinaAppDelegate.h

"#import "LoginViewController.h"

@implementation MinBlog4SinaAppDelegate

@synthesize window;

@synthesize loginViewController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     

   [application setStatusBarHidden:NO];

[self.window addSubview:loginViewController.view];   

 [self.window makeKeyAndVisible];   

return YES;

}

- (void)dealloc

{   

 [window release];   

[loginViewController release];   

[super dealloc];

}     

 四、接下我們要用到Interface Builder這個工具處理UI方面的工作,雙擊MainWindow.xib文件,這樣IB會打開這個文件,然后從Library面版拖一個View Controller組件到MainWindow.xib中,并且把這個組件的class命名成我們上面建的LoginViewController,如下圖所示:

五、接下來鼠標點擊選中Min Blog4 Sina App Delegate文件,然后右邊的面板中選擇Connections,然后能看到一個loginViewController,然后鼠標點擊跟在它后面的小圓圈點,然后能拉出一條線,然后拖拽這個線到上面四步驟中新建的LoginViewController組件上完成連接工作,完成后如下圖所示:

到此我們完成了把LoginViewController的view添加到window進行顯示進行顯示的工作了,這樣時候可以運行看看,不過運行起來后除了白色的屏幕沒有其它任何的東西。

      六、打開LoginViewController.h文件,添加如下代碼:

#import <UIKit/UIKit.h>

#import "UIDialogWindow.h

"#import "Sqlite.h"

#import "InfoViewController.h"

#import "BlogClient.h"#import "JSON.h"

@interface LoginViewController : UIViewController

{   

UIDialogWindow *dialog;   

 InfoViewController *infoViewController;   

 NSMutableArray *userList;   

BlogClient *blog;

}

@property (nonatomic,retain)NSMutableArray *userList;

@end

上面infoViewController是一個UIViewController,這個是用來提供彈出窗口的內容部分的view用,在上一篇中說過UIDialogWindow組件的內容view是在使用時才提供的,這個infoViewController就是用來給名為dialog的UIDialogWindow組件提供顯示內容view。這樣我們還需要新建名為InfoViewController的UIViewController subclass類型的類文件,新進的時候記得勾上With XIB user interface選項。

      七、如最上面的(圖6)所示這個InfoViewController彈出窗口內容就包括一個顯示文字描述的TextView;一個點擊執行開始的Button,以及左上角的藍色小圖標和“信息提示”,根據這個情況打開上一步新建InfoViewController.h文件聲明TextView和Button和按鈕事件,至于藍色小圖標和“信息提示”直接用IB在xib文件里加上即可,至于delegate和SEL onClick,是當用戶點擊開始按鈕后會調用delegate的onClick方法,告訴調用這個dialog的UIDialogWindow組件父ViewController按鈕被點擊了,dialog不處理具體的業務。InfoViewController.h具體代碼如下:

#import <UIKit/UIKit.h>

#import "Global.h"

@interface InfoViewController : UIViewController {   

 id delegate;   

 SEL onClick;   

 IBOutlet UITextView *textView;   

IBOutlet UIButton *startBtn;

}

@property (nonatomic,retain)IBOutlet UITextView *textView;

@property (nonatomic,retain)IBOutlet UIButton *startBtn;

-(void)setDelegate:(id)aDelegate onClick:(SEL)aOnClick;-(IBAction)startAuth:(id)sender;

@end     

八、InfoViewController.m代碼中我們用到了前面準備篇中定義在Global下的pngWithPath的方法,具體如下:

#import "InfoViewController.h"

@implementation InfoViewController

@synthesize textView;

@synthesize startBtn;

-(void)setDelegate:(id)aDelegate onClick:(SEL)aOnClick{    delegate=aDelegate;   

 onClick=aOnClick;

}

-(IBAction)startAuth:(id)sender

{   

if (delegate)

{       

[delegate performSelector:onClick withObject:@"start"] ;   

 

}

 }

- (void)viewDidLoad

{   

[super viewDidLoad];   

textView.font=[UIFont systemFontOfSize:15];   

 [startBtn setBackgroundImage:[[Global pngWithPath:@"btn_h_bg"] stretchableImageWithLeftCapWidth:12.0 topCapHeight:14.0] forState:UIControlStateNormal];   

[startBtn setBackgroundImage:[[Global pngWithPath:@"btn_h_bg"] stretchableImageWithLeftCapWidth:12.0 topCapHeight:14.0] forState:UIControlStateHighlighted];

}

- (void)dealloc

{   

 [textView release];   

[startBtn release];   

[super dealloc];

}

@end     

九、接下來我們用IB來處理界面雙擊InfoViewController.xib打開,然后設定View到合適的大小尺寸,并且比較重要的是要把這個View的Background設置成Clear Color也就是透明了,其他的就是把相應的TextView Button Label拖到View進行適當布局,大概效果如下:

完成控件布局后還需要進行連接操作,完成后如下圖:

10、在步驟6中我們只完成LoginViewController.h文件,然后去做InfoViewController了,現在我們繼續來完成LoginViewController.m文件,首先是在viewDidLoad方法中進行sqlite數據庫中賬號檢查,并且實例化SDK中的BlogClient對象blog,具體代碼如下,對于這個blog對象提供了oauth認證、微博獲取、微博發布等一系列跟微博相關的方法,有興趣的同學可以讀一下sdk的源代碼,相信會很有幫助。

#define kOAuthConsumerKey @"3983859935"   

 #define kOAuthConsumerSecret @"201fea7b1e1203a76a10f3be570f5abb"

@implementation LoginViewController

...................

//如果數據庫中已經有帳號記

相關TAG標簽
上一篇:臺積電:絕大多數7nm客戶都會轉向6nm_IT新聞_博客園
下一篇:最后一頁
相關文章
圖文推薦

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

美女MM131爽爽爽毛片