2013-03-20 26 views
5

Tôi có chế độ xem phụ kiện tùy chỉnh (UIButton) trên ô mẫu thử nghiệm của tôi trong bảng phân cảnh. Khi tôi nhấp vào nút đó, phương thức ủy nhiệm cho nút phụ kiện được nhấn không được gọi. Nếu tôi sử dụng một nút tiết lộ tiêu chuẩn, nó được gọi là tốt. Tôi giả sử tôi đang thiếu một cái móc ở đâu đó. Có ai biết ở đâu không?Xem phụ kiện tùy chỉnh trên UITableView Mẫu thử nghiệm không kích hoạt

+0

Tôi đang sử dụng lớp con UITableViewCell và thiết kế ô trong trình tạo giao diện. Tôi không làm điều đó từ bộ điều khiển xem bảng. Tôi cần phải gọi ra từ phân lớp đó. – smokingoyster

Trả lời

1

Tôi đã kết thúc bằng cách sử dụng giao thức cho các ô bảng tùy chỉnh.

CustomAccessoryTableCellDelegate.h

@protocol CustomAccessoryTableCellDelegate <NSObject> 

    @required 
    - (void) accessoryButtonTappedForCell: (UITableViewCell *) cell; 

@end 

CustomAccessoryViewTableCell.h

@interface CustomAccessoryViewTableCell : UITableViewCell 

     /** The custom accessory delegate. */ 
     @property (nonatomic, weak) id<CustomAccessoryTableCellDelegate> delegate; 

@end 

CustomAccessoryViewTableCell.m

- (IBAction) buttonAction:(id)sender{ 

    if ([self.delegate respondsToSelector:@selector(accessoryButtonTappedForCell:)]) { 
     [self.delegate accessoryButtonTappedForCell:self]; 
    } 

} 

Bên Xem Bảng điều khiển

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

    CustomAccessoryViewTableCell *cell = [tableView 
         dequeueReusableCellWithIdentifier:@"MyCustomCell"]; 

    cell.label.text = @"Some Name"; 
    cell.delegate = self; 

    return cell; 
} 

#pragma mark - Custom Accessory View Delegate 

- (void) accessoryButtonTappedForCell:(UITableViewCell *)cell{ 
    [self tableView:self.writerTable 
     accessoryButtonTappedForRowWithIndexPath: [self.writerTable 
                 indexPathForCell:cell]]; 
} 
2

Guess 1: Bạn không thực sự có một "giao diện tùy chỉnh phụ kiện" bạn có một UIButton được đặt nơi một phụ kiện sẽ đi. Điều này sẽ không kích hoạt nút phụ kiện được ủy thác bởi vì nó không thực sự là một phụ kiện.

Guess 2: Bạn làm có một cái nhìn phụ kiện có thật, nhưng nó không bao giờ nhận được "vòi" sự kiện bởi vì bạn có một UIButton trong nó được ăn tương tác người dùng nhưng không phải bắn một hành động. Trong trường hợp đó, hãy thử thêm một đơn giản UIView để thay thế.

Ngoài ra, tôi cần thêm thông tin.

+0

Tôi đã thử sử dụng chế độ xem hình ảnh thay vì không tạo ra bất kỳ sự khác biệt nào. Nút được nối với thuộc tính accessoryView của UITableViewCell. Có cách nào để lập trình gọi điều này từ một lớp con UITableViewCell không? – smokingoyster

+0

Trong 'cellForRowAtIndexPath' của bạn, sau khi bạn nhận được ô, hãy kiểm tra xem thuộc tính' accessoryView' của bạn có tham chiếu đến chế độ xem của bạn hay không nếu nó là 'nil'. Nếu nó được thiết lập chính xác trong IB, nó sẽ tồn tại. – DBD

+0

Tôi hiển thị nút/chế độ xem/bất kỳ thứ gì tôi có ở đó. Có vẻ như nó chỉ xử lý sự kiện nhấn trên các loại chế độ xem phụ kiện được xác định riêng của nó. Và dường như không có cách nào tốt để làm điều đó một cách lập trình từ tế bào bảng. Tôi đã kết thúc bằng cách sử dụng một giao thức tùy chỉnh, mà tôi sẽ đưa vào một câu trả lời. – smokingoyster

2

docs táo đối với phương pháp đại biểu phụ kiện nói

Các đại biểu thường đáp ứng với vòi nước vào nút tiết lộ (quan điểm phụ kiện) bằng cách hiển thị một cái nhìn mới liên quan đến hàng đã chọn. Phương thức này không được gọi khi một khung nhìn phụ kiện được thiết lập cho hàng tại indexPath.

để không được gọi cho chế độ xem phụ kiện tùy chỉnh. nó là một hành vi tiêu chuẩn.

Các vấn đề liên quan