2014-12-22 2 views
0

내가 직면 한 것은 Swift에서 코드를 개발했습니다. 그것에는 사용자 정의 셀과 UIButton이 있습니다. 버튼은 각각의 셀에 속성이있는 IBOutlet 연결이며, 해당 셀에 대한 작업은 동일한 클래스에 바인딩됩니다. 이제 질문은 iOS 8에서 완벽하게 작동한다는 것입니다.하지만 버튼을 터치 할 때마다 전체 셀이 탭되고 Tableview의 didSelectRowAtIndexPath:이 호출 될 때 iOS 7의 문제점을 알 수 없습니다. 내가 지금까지했던 것은 부모의 전망과 셀UITableViewCell iOS 7에서 작동하지 않는 IBAction

  • 확인 .userInteractionEabled없고 그것의 변경하면
  • 버튼을 제거하고 다른 포럼에서 발견로 추가 다시 값 만
  • 가있는 tableview의 대리자 메서드 numberOfSections을 검사 운 , numberOfRowsInsection:heightForRowAtIndexPath:을 사용하고 반환 값 유형을 NSInteger 및 CGFloat로 변경했습니다 (질문에 대한 stackoverflow에서 찾을 수 있음).

누구도이 문제에 직면 해 지금까지 해결책을 찾았습니까?

편집

  • 셀에 값을 설정 한 후있는 UIButton 목표를 설정하라는 작용에 의해 조사했다. 아니요 행운
+0

tableview 셀을 만들 때 addTarget을 사용하여 버튼에 사용자 정의 액션을 부여하십시오. – Manthan

+0

awakefromNib에서이 작업을 수행했습니다. Lemme try layOutSubviews – Saad

+0

테이블 뷰 또는 어딘가에서 서브 뷰를 사용하여 셀을 만들 때 코드를 넣으십시오. 아래에 액션 메소드를 넣으십시오. – Manthan

답변

0

내 응용 프로그램에서 아래 코드를 완료하고 잘 작동합니다.

사용자 지정 테이블 뷰 셀을 코딩하려고 시도하지 마십시오.

viewcontroller에서 해당 셀의 값을 가져올 수 있습니다.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row==0) 
    { 
     static NSString *simpleprice = @"Price"; 

     price = (PriceCell *)[tableView dequeueReusableCellWithIdentifier:simpleprice]; 

     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PriceCell" owner:self options:nil]; 

     price = [nib objectAtIndex:0]; 
     [price.btnPrice addTarget:self action:@selector(buyPressed) forControlEvents:UIControlEventTouchUpInside]; 
    } 
    return price; 

} 

희망이 도움이 될 것입니다. 이것은 ios7 및 ios8에서도 작동합니다.

감사합니다 ...

내가 오랜 시간을 파고 후 같은 문제를 직면
0

, 나는 근본 원인을 발견하고 내가 같은 전에 무슨 짓을했는지 세포 XIB

에 있었다 :

i) 먼저 CustomCell .h.m을 추가했습니다.
II)를 한 후 나는 새 파일 옵션으로 XIB을 추가 한은, 당신은 내가 선택하고 번들에 추가 한의 "보기" 같은 옵션이 , 나타났습니다. 내 CustomCell.h으로 묶어 라.

해결책 :

I), 새 파일 옵션으로 XIB 추가 사용자 인터페이스에서 보기를 선택합니다. ii) XIB에서 왼쪽 패널의보기를 볼 수 있습니다. 해당보기를 삭제하십시오. iii) 사용자 인터페이스 패널에서 UITableViewCell을 끌어 놓습니다. 이 단계를 완료 한 후 XIB은 아래 그림과 비슷하게 보입니다.

enter image description here

0

문제점을 테스트했습니다. 저를 위해 달리는 그것의 벌금. 아래 내 코드를 참조하십시오. CustomCell.swift

class CustomCell: UITableViewCell { 

    @IBOutlet var testButton: UIButton! 

    override func awakeFromNib() { 

     super.awakeFromNib() 

     // Initialization code 

    } 

    override func setSelected(selected: Bool, animated: Bool) { 

     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 

    } 

    func testButtonClicked() { 

     NSLog("Button Clicked") 

    } 

} 

에서 TestTableViewController.swift

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as CustomCell 

     // Configure the cell... 

     cell.testButton.addTarget(cell, action: "testButtonClicked", forControlEvents: UIControlEvents.TouchUpInside) 

     return cell 

    } 

     override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     NSLog("didSelectRowAtIndexPath called") 

    } 

에서

나는 그것이 "버튼을 클릭"세포를 클릭 때 "라고 didSelectRowAtIndexPath를"로그 기록 버튼을 클릭했습니다. 당신은 reset() 함수 나 두 번째 마지막 함수에서 뭔가 잘못되었을 수도 있습니다.

0

cell.button Action target to self을 변경하고 단추 작업 메서드를 UITableView를 사용할 수있는 viewController 클래스 (.mm) 파일로 복사하십시오.

+0

@Saad : 해결 되었습니까? – Mrunal

관련 문제