iOS 點選UITableViewCell上的控制元件獲取對應的cell
場景
很多情況下cell上有很多可以觸發的子控制元件,例如點贊,提示,選擇等操作,介紹幾個方法,隨意感受下
方法1 (獲取SuperView)
@implementation UIView (GetCellFromContentviewSubview)
- (UITableViewCell *)getCellFromContentviewSubview
{
if ([[[self superview] superview] isKindOfClass:[UITableViewCell class]]) {
return (UITableViewCell *)[[self superview] superview];
}
else if ([[[[self superview] superview] superview] isKindOfClass:[UITableViewCell class]]) {
return (UITableViewCell *)[[[self superview] superview] superview];
}
else{
NSLog(@"Something Panic Happens");
}
return nil;
}
@end
方法2 (另一種方式獲取SuperView)
@interface UIView (SuperView)
- (UIView *)findSuperViewWithClass:(Class)superViewClass;
@end
@implementation UIView (SuperView)
- (UIView *)findSuperViewWithClass:(Class)superViewClass {
UIView *superView = self.superview;
UIView *foundSuperView = nil;
while (nil != superView && nil == foundSuperView) {
if ([superView isKindOfClass:superViewClass]) {
foundSuperView = superView;
} else {
superView = superView.superview;
}
}
return foundSuperView;
}
@end
// 呼叫
UITableViewCell *cell = [button findSuperViewWithClass:[UITableViewCell class]]
方法3 (牆裂推薦)
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
UITableViewCell *cell = (UITableViewCell*)[self.tableView cellForRowAtIndexPath:indexPath];
這個方法看上去比上面兩個舒服多了吧,簡單理解下
第一段:指定的控制元件A,A區域裡面的有個座標(0,0)的位置,把該座標相對於A控制元件的位置轉換到相對於tableView的座標
第二段:indexPathForRowAtPoint
根據轉換的座標,獲取對應的indexpath
第三段:根據Indexpath獲取對應的cell
相關文章
- iOS:改變UITableViewCell的選中背景色iOSUIView
- c# 獲取當前方法事件對應的控制元件C#事件控制元件
- UITableViewCell的高度快取UIView快取
- [WPF]獲取控制元件間的相對位置控制元件
- ul中有li,點選li,獲得對應的序號
- iOS 中 cell的用法iOS
- iOS-UITableViewCell的一些事iOSUIView
- 線上直播系統原始碼,取CTreeCtrl控制元件選中節點的文字原始碼控制元件
- jQuery獲取點選td單元格的值jQuery
- iOS全埋點解決方案-控制元件點選事件iOS控制元件事件
- android獲取控制元件的幾種方法Android控制元件
- FileUpload 上傳的檔案獲取相對路徑
- ios storyboard 獲取storyboard中的viewControlleriOSViewController
- IOS 動態改變cell的高度iOS
- [急⚠] BasePage 如何封裝獲取 elements 的第 x 個的點選?封裝
- 獲取滑鼠左鍵點選 creator 3.8
- 【Javascript】獲取選中的文字JavaScript
- Java 獲取Excel中的表單控制元件JavaExcel控制元件
- Espresso 如何獲取控制元件的實時文字?Espresso控制元件
- 巢狀UITextView的UITableViewCell高度自適應巢狀UITextView
- UIBarButtonItem 在 iOS 11 上的改變及應對方案UIiOS
- Flutter 小知識,Key的使用(獲取當前點選Widget位置/獲取當前Widget大小)Flutter
- JavaScript獲取選中checkbox核取方塊的選中值JavaScript
- IOS多型別Cell的tableView實現iOS多型型別View
- Python獲取IP地址對應的地理位置資訊!Python
- 獲取url上的引數
- AOP - 消除控制元件的點選抖動控制元件
- iOS初級開發學習筆記:tablevView中,點選cell後下部彈出下級列表,需實現cell高變化iOS筆記View
- Swift iOS : self sized cellSwiftiOSZed
- Swift iOS : 定製CellSwiftiOS
- iOS開發-獲取rootViewController的正確方式iOSViewController
- 【IOS初學者】UITableView與自定義UITableViewCelliOSUIView
- iOS AutoLayout進階(五)UITableViewCell自動高度iOSUIView
- 獲取上個月的問題
- XamarinEssentials教程獲取首選項的值
- Flutter獲取IOS bundle id和Android應用包名FlutteriOSAndroid
- UITableViewCell含有WebView的自適應高度新解決方案UIWebView
- 微軟商店無法獲取怎麼辦_win10應用商店點獲取沒反應的解決方法微軟Win10
- JavaScript 獲取選中checkbox核取方塊的值JavaScript