你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 協議使用

iOS 協議使用

編輯:IOS開發綜合
這整個是一個cell,框框的放的image(有很多圖片,可以左右滑動,我用iCarousel做的,這個的代理寫在自定義cell類裡面的)。現在需要點擊圖片進入下一個頁面。。。。現在我點擊圖片,都會進入到自定義cell類裡面的代理裡,但是cell類裡面,是不讓我彈出下一個viewcontroller的。。??不然用[self.navigationController pushViewController:show animated:YES];這個方法。


最後用協議實現。當用戶點擊一個圖片的時候,進入到cell類的iCarousel代理方法-(void)carousel:(iCarousel *)carousel didSelectItemAtIndex:(NSInteger)index在這裡把index傳給StarShowViewController,然後在StarShowViewController裡面做push的動作。

(1)定義協議ImageItemDelegate.h #import

@protocol ImageItemDelegate

-(void)passItem:(NSString*)index;//把點擊的是第幾個image 的index 傳過來

@end



(2)在StarShowViewController.h類裡面遵守協議
#import "ImageItemDelegate.h"
@interface StarShowViewController : UIViewController {

UITableView *starTableView;
NSMutableArray *starArray;


}



(4)在StarShowTableViewCell.h類裡面聲明一個代理
#import "ImageItemDelegate.h"

@interface StarShowTableViewCell : UITableViewCell

@property(nonatomic,retain)NSObject *itemDelegate;//聲明一個代理


(5)在StarShowTableViewCell.m類裡面傳值

//選擇某個image item
-(void)carousel:(iCarousel *)carousel didSelectItemAtIndex:(NSInteger)index{

NSLog(@"index:%ld",(long)index);
NSString *str = [NSString stringWithFormat:@"%ld",index];


UIView *view = carousel.currentItemView;

[self.itemDelegate passItem:str];//通過代理把str傳到StarShowViewController類裡面


}


(6)在 StarShowViewController.m 裡面 表的代理方法 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath設置代理
cell.itemDelegate = self;//設置代理


(7)進入到下一個viewcontroller #pragma mark - ImageItemDelegate
//從cell那邊拿到值
-(void)passItem:(NSString *)index{

ShowViewController *show = [[ShowViewController alloc] init];
show.imageIdex = index;
[self.navigationController pushViewController:show animated:YES];

}



----------------------
叫你好好看書,又不好好看書! 實現方法很多種:①、可以在controller裡面直接給Image添加點擊事件 ②、使用delegate,在當前controller裡面實現即可觸發點擊事件 ③ block 簡單 ④ 事件響應者鏈可以處理
第一種在這裡不合適,第三種在這裡還沒有用過,理論上block也可以傳值,考慮到block限制比較多,不使用 第四種事件響應者鏈不太清楚是怎麼回事

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved