你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS block用法

iOS block用法

編輯:IOS開發綜合

最近在學習的過程中遇到一個問題,整個項目用UINavigationController作為根控制器,某一個表試圖控制器使用了自定義的UITableViewCell,該類cell有自定義的幾個按鈕,當點擊cell的任何一個按鈕時需要知道當前是哪個cell以及哪個按鈕被點擊然後做相應的事件響應(更改該行數據,頁面跳轉等),之前用過代理,這一次想換一種方式,所以選擇了用塊來代替,下面列出詳細步驟

1.在自定義的cell頭文件中申明塊,並定義相應的塊類型

#import

@class ShopingCartTableViewCell;

//塊申明

typedef void(^reduceGoodNumS)(ShopingCartTableViewCell *);

typedef void(^addGoodNumS)(ShopingCartTableViewCell *);

typedef void(^selectGoodS)(ShopingCartTableViewCell *);


@interface ShopingCartTableViewCell : UITableViewCell

//相應的塊變量定義

@property (strong, nonatomic) reduceGoodNumS reduceGoodNumBlock;

@property (strong, nonatomic) addGoodNumS addGoodNumBlock;

@property (strong, nonatomic) selectGoodS selectGoodBlock;


@end

2.在使用自定義cell填充表格的地方,實現塊功能,這裡以添加商品數量為例,減少商品數量和選中商品數量同下

//添加商品數量block

cell.addGoodNumBlock = ^(ShopingCartTableViewCell *cell)

{

NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

NSDictionary *goodsDic = [self.dataSource objectAtIndex:indexPath.section];

NSArray *goodsArray = [goodsDic objectForKey:@"array"];

self.good = [goodsArray objectAtIndex:indexPath.row];

self.good.num = [cell.numTF.text intValue]+1;

// 增加商品數量

if ([self alertNum])

{

cell.numTF.text = [NSString stringWithFormat:@"%d",[cell.numTF.text intValue] + 1];

}

// 修改總金額

if (cell.checkboxBtn.selected)

{

[self alertSelecedGoodNum];

// 計算價格

[self alertSum];

indexPath = [NSIndexPath indexPathForRow:0 inSection:self.dataSource.count];

NSArray *indexArray=[NSArray arrayWithObject:indexPath];

[self.tableView reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationAutomatic];

}

};



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