2012-05-09 89 views
1

我在TableView中有一個自定義單元格,單元格中有一個按鈕。當我選擇單元格時,背景變成藍色,按鈕消失。有什麼辦法可以防止這種情況發生?如何防止按鈕在選擇TableView單元格時消失?

這樣的的cellForRowAtIndexPath -

對選定的表格單元
- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) 
{ 
    cell = [[MyTableCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
            reuseIdentifier:CellIdentifier]; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

} 
Search *current = [self.retrievedTweets objectAtIndex:indexPath.row]; 
cell.textLabel.text = current.text; 
cell.textLabel.font = [UIFont systemFontOfSize:15.0]; 
cell.textLabel.numberOfLines = 2; 
cell.detailTextLabel.text = current.name; 
cell.imageView.image = current.userImage; 


btnUncheck =[[UIButton alloc] initWithFrame:CGRectMake(400, 35, 20, 20)]; 


btnUncheck.backgroundColor = [UIColor redColor]; 
btnUncheck.layer.cornerRadius = 10; 
btnUncheck.hidden =NO; 
btnUncheck.tag=indexPath.row; 
//[btnUncheck addTarget:self action:@selector(didSelectRowAtIndexPath:) forControlEvents:UIControlEventTouchUpInside]; 

[cell.contentView addSubview:btnUncheck]; 
return cell; 
} 
+0

你是如何添加按鈕的? – jrturton

+0

'btnUncheck = [[UIButton alloc] initWithFrame:CGRectMake(400,35,20,20)]; btnUncheck.backgroundColor = [UIColor redColor]; btnUncheck.layer.cornerRadius = 10; [cell.contentView addSubview:btnUncheck];' –

回答

1

使用自定義圖像。或嘗試使用按鈕圖像。

+0

我試過 - btnUncheck.highlighted = NO;和btnUncheck.adjustsImageWhenHighlighted = NO;沒有工作。 –

+0

我在問關於tableview的選定視圖。您可以設置自己的圖像,而不是藍色圖像。 – Mangesh

+0

是啊!我也是這樣做的。覆蓋setSelected方法。 (BOOL)動畫:(BOOL)動畫{super setSelected:selected animated:animated];如果([self.accessoryView isKindOfClass:[UIButton class]]) {UIButton * button =(UIButton *)self.accessoryView; [[button imageView] setHighlighted:NO]; } } ' –

0

粘貼下面一行在你的tableview委託方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{

///// your code /////////// 
cell.selectionStyle=UITableViewCellSelectionStyleNone; 
//// your code//////// 

}

在這裏你的藍backgound不會顯示..

+0

事情是我想要選擇發生,我有一個單元格中的按鈕和選擇我想要那裏。 –

+0

只是嘗試這個代碼的工作,但看到你的cellIdentifier不能爲零 –

+0

是的,我試過了。代碼讓藍色消失,但按鈕仍然不存在,不會出現。 –

0

你可以做什麼這個:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{[tableView deselectRowAtIndexPath:indexPath animated:YES];} 

希望這有助於

另外,如果你已經實現了這一點,還有什麼你有這個委託的方法?

+0

使用你的代碼,藍色出現,然後消失。之後,該按鈕再次出現。我需要的是,藍色與按鈕在那裏。這意味着 - 按鈕也應該在選擇中。選擇不會消失。 –

+0

你在消失按鈕的目標方法和didSelectRowAtIndexPath方法中有什麼代碼?你可以發佈他們到你的問題? – RileyE

0

而是這行:

btnUncheck = [[UIButton alloc] initWithFrame:CGRectMake(400, 35, 20, 20)]; 

使用:

btnUncheck = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 
[btnUncheck setFrame:CGRectMake(400, 35, 20, 20)]; 
+0

對不起!這是行不通的。 –

+0

如果可以共享'cellForRowAtIndexPath'方法,我們可以提供更好的幫助。 – ugur

+0

與問題共享! –

0

創建具有背景色清晰,設置其爲 「定製」 的觀點。

UIView* vista=[[[UIView alloc] init] autorelease]; 
vista.backgroundColor=[UIColor clearColor]; 
cell.selectedBackgroundView=vista; 
0

解決此問題的方法是創建一個自定義單元,然後在xib編輯器中添加一個按鈕。

所以,在xib編輯器中添加一個'UITableViewCell'項目。然後將該按鈕添加到xib編輯器中的該單元格項目。然後你會附上您的自定義單元格的表中對應的.m文件位置:

  • (UITableViewCell的*)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath

我已經試過了,只有一行表和自定義單元格作爲屬性從xib綁定到具有表視圖的.h文件。亮點在那裏,只是灰色的按鈕(仍然可見)。爲了讓這個工作更多的行涉及更多。您需要加載自定義的utableviewcell xib,並動態分配您的自定義單元以使其工作。

相關問題