iphone開發我的新浪微部落格戶端-使用者登入OAuth授權認證篇(1.3)

來源:互聯網
上載者:User

在上一篇中,我們已經完成了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

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

//如果資料庫中已經有帳號記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.