2011-06-29 94 views
3

我還沒有找到關於如何做到這一點的真正好例子。有一張我想用作附件按鈕的圖像,當我將其放入並點擊它時不起作用。因此,它看起來正確的,但沒有工作... 這裏是我的代碼:如何製作自定義表格單元附件

[cell setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton]; 
cell.accessoryView = [[UIImageView alloc] 
    initWithImage:[UIImage imageNamed:@"TableView_Green_Disclosure.png"]]; 

那麼,如何讓我的UIImageView的調用accessoryButtonTappedForRowWithIndexPath時,它被竊聽?

回答

1

檢查博客文章hdr-> cmdline以創建UITableView的自定義附件視圖。 作者使用UIButton對象與圖像的自定義配件視圖。

+0

這篇文章的任何鏈接? :) – Hulvej

+0

PFB鏈接..http://www.edumobile.org/iphone/iphone-programming-tutorials/impliment-a-custom-accessory-view-for-your-uitableview-in-iphone/ – Jhaliya

2

要使按鈕實際上有所作爲,您需要從UITableViewDelegate實現- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath

當附件按鈕連續被竊聽,這種方法將被調用,你就會有正確使用索引路徑傳遞,以確定哪些行的附件被竊聽行動的機會。

+0

謝謝,但我如何實現,我剛剛提出的imageview,我想我只是假設,因爲我指定的配件類型,它會調用該方法? – Jackelope11

5

accessoryViewaccessoryType徹底的閱讀就會發現,他們是相互排斥的方式來定製一個細胞。

設置accessoryType將導致在瀏覽時調用表視圖委託方法。

設置accessoryView會忽略的accessoryType設置,給你的東西來顯示。如果您想從自定義視圖中收到回調,則應該是一個已經連線的控件。 (或使用手勢識別器查看任何視圖。)

如果您使用按鈕並將其操作設置爲accessoryTapped:,您將收到該按鈕作爲「發件人」參數。您可以遍歷視圖層次結構,直到找到表格視圖單元格,然後向表格視圖詢問該單元格的indexPath。這會讓你獲得一個你的模型對象的索引,並且你可以適當地採取行動。

作爲該按鈕的替代,您可以在上面的UIImageView上啓用交互,併爲其添加手勢識別器。

+0

謝謝你通過答案。 – Jackelope11

0

要使用accessoryView - 您需要將單元格的accessoryType設置爲UITableViewCellAccessoryNone將UIButton(與關聯圖像)存入單元格,然後將其連線以接收用戶觸摸。你可以使用類似下面的代碼爲IBAction爲響應細胞的UIButton的被感動:

- (IBAction) accessoryButtonPressed:(id) sender 
{ 
NSUInteger pathInts[] = { 0,0 }; 
pathInts[1] = self.currentselectedrow; // ivar set when tableview row last selected 
NSIndexPath* indexPath = [NSIndexPath indexPathWithIndexes:pathInts length:2]; 
[self tableView:mytableview accessoryButtonTappedForRowWithIndexPath:indexPath]; 
} 

的UIButton的將有線你的tableview的「的cellForRowAtIndexPath:」裏面的線路的方式來執行這種膠碼功能

[thecell setButtonTarget:self action:@selector(accessoryButtonPressed:)]; 

我注意到的一件事是,UIButton似乎想要一個'向右滑動'而不是簡單的'點擊'觸摸來觸發事件 - 但它可能是我的iOS iOS版本的問題。請注意,我已將一個名爲'cell_accessoryButton'的UIButton *對象添加到Custom Cell源。

在細胞的來源,你會支持的代碼像這樣「setButtonTarget」呼叫:

- (void) setButtonTarget:(MyViewController*)inTarget action:(SEL) inAction 
{ 
[self.cell_accessoryButton addTarget: inTarget 
         action: (SEL) inAction 
      forControlEvents: UIControlEventTouchUpInside]; 
} 

它是如此容易得多隻使用accessoryType參考,並讓iOS的做繁重的 - 但是,如果你想要一個自定義的圖形等 - 這是另一條有效的路徑。