Tôi có một tableview với hai hành động trong nó, lần đầu tiên trên tôi sử dụng các delegate didSelectRowAtIndexPath, cho một thứ hai tôi muốn sử dụng một hành động trên một nút trên tế bào của tôi để làm cái gì khác. Vấn đề của tôi là tôi không thành công để có được đường dẫn chỉ mục? Cách tốt nhất để làm điều đó là gì.Làm thế nào để có được indexPath trong một tableview từ một hành động nút trong một tế bào?
Trả lời
Nếu bạn đã thêm vào nút để các tế bào như,
[cell.contentView addSubview:button];
sau đó, bạn có thể có được con đường chỉ số như,
- (void)onButtonTapped:(UIButton *)button {
UITableViewCell *cell = (UITableViewCell *)button.superview.superview;
NSIndexPath *indexPath = [tableView indexPathForCell:cell];
// Go ahead
}
Cảm ơn! Người gửi UIButton * button = (UIButton *); UITableViewCell * cell = (UITableViewCell *) button.superview.superview; –
Được rồi! Chào mừng bạn! – EmptyStack
Bạn không nên truy cập bảngView từ superview. Trong khi điều này hoạt động ngay bây giờ, nó có thể không hoạt động trên iOS mới. Ví dụ điển hình từ 6/7 Apple đã thêm một người giám sát khác. Điều này sẽ gặp sự cố – CW0007007
đây là mã đầy đủ cho một nút tùy chỉnh:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomCellFilter *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {cell = [[CustomCellFilter alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];}
//configure your cell here
cell.titleLabel.text = @"some title";
//add button
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
resetButton.frame = CGRectMake(40, 10, 18, 18);
[resetButton addTarget:self action:@selector(onButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
[resetButton setImage:[UIImage imageNamed:@"someimage.png"] forState:UIControlStateNormal];
[cell.contentView addSubview:myButton];
//afterwards return the cell
return cell;
- (void)onButtonTapped:(UIButton *)button {
UITableViewCell *cell = (UITableViewCell *)button.superview.superview;
NSIndexPath *indexPath = [filterTable indexPathForCell:cell];
NSLog(@"%@", indexPath);
//use indexPath here...
}
Trong trường hợp nút của bạn được di chuyển hoặc Apple thay đổi hệ thống phân cấp chế độ xem cho chế độ xem phụ kiện, phương pháp này sẽ mở rộng chuỗi để xem cho một UITableViewCell:
- (void)tapAccessoryButton:(UIButton *)sender {
UIView *parentView = sender.superview;
// the loop should take care of any changes in the view heirarchy, whether from
// changes we make or apple makes.
while (![parentView.class isSubclassOfClass:UITableViewCell.class])
parentView = parentView.superview;
if ([parentView.class isSubclassOfClass:UITableViewCell.class]) {
UITableViewCell *cell = (UITableViewCell *) parentView;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
[self tableView:self.tableView accessoryButtonTappedForRowWithIndexPath:indexPath];
}
}
Tôi đang sử dụng giải pháp này - nhận con đường chỉ số của tế bào sử dụng điểm
CGPoint center= [sender center];
CGPoint rootViewPoint = [[sender superview] convertPoint:center toView:_tableView1];
NSIndexPath *indexPath = [_tableView1 indexPathForRowAtPoint:rootViewPoint];
NSLog(@"%@",indexPath);
công việc của nó một cách hoàn hảo
Điều này phù hợp hơn thay vì sử dụng 'superView.superView' – Mrug
Trong trường hợp bạn đang sử dụng một cái nhìn bộ sưu tập, bạn có thể sử dụng phương pháp Yogesh, nhưng thay đổi indexPathForRowAtPoint cho indexPathForItemAtPoint như sau:
CGPoint center= [sender center];
CGPoint rootViewPoint = [[sender superview] convertPoint:center toView:_tableView1];
NSIndexPath *indexPath = [_tableView1 indexPathForRowAtPoint:rootViewPoint];
NSLog(@"%@",indexPath);
- 1. Làm thế nào để biết indexPath/hàng trên nút bấm của ô Tableview trong một UITableView?
- 2. Làm thế nào để có được văn bản tế bào dựa trên indexPath?
- 3. Làm thế nào có thể tableView: commitEditingStyle: forRowAtIndexPath: được gọi với một nil indexPath?
- 4. Làm thế nào để đếm các nhóm của cùng một tế bào trong một mảng 2d?
- 5. Làm thế nào để xóa một số nhân vật trong một tế bào 2010 excel
- 6. Xóa các phần tử từ một tế bào trong Matlab
- 7. làm thế nào biết nếu uitableview có một tế bào được chọn
- 8. Tế bào bảng Accordion - Làm thế nào để tự động mở rộng/hợp đồng uitableviewcell?
- 9. Làm thế nào bạn có thể chỉnh sửa một tế bào QTableView từ một thử nghiệm đơn vị QTest?
- 10. Nhiều dòng trong một tế bào của một bảng
- 11. làm thế nào để chuyển đổi một tế bào để chuỗi trong matlab
- 12. Làm thế nào để Xác định tế bào hợp nhất trong một số Row
- 13. Làm thế nào để bọc đường trong một tế bào jtable?
- 14. Làm thế nào để loại bỏ tất cả các tế bào trong một tablewidget pyqt4?
- 15. làm thế nào để làm cho một div bên trong một tế bào td chồng lên td tiếp theo
- 16. Tôi muốn có một UITextField đó là trong UITableViewCell để trở thành responder đầu tiên chỉ khi tế bào chạm
- 17. tế bào và phương pháp có liên quan
- 18. thứ tự các tế bào tableview bởi phụ đề
- 19. làm thế nào để có được hồ sơ graphviz có tế bào lót lên
- 20. Cách thêm hàng/ô động vào UITableView bằng cách nhấn một nút trong iPhone
- 21. Làm thế nào để có được một tế bào DataFrid WPF để căn phải mà không làm cho khu vực lựa chọn trên một hàng mới nhỏ?
- 22. Làm thế nào để ngăn chặn lưới extjs từ di chuyển khi nhấp vào một tế bào?
- 23. Chiều cao tế bào UITableView động Dựa trên nội dung
- 24. Làm thế nào để tạo ra một tế bào excel ReadOnly bằng C#?
- 25. Làm thế nào để có được ComboBox cấp tế bào cho WPF DataGrid?
- 26. Làm thế nào để tạo một nút trùng lặp từ một nút trong Neo4j?
- 27. Làm thế nào để đặt giữa activityindicator của một tableview
- 28. làm thế nào để phát hiện một sự thay đổi trong bất kỳ tế bào excel trong C#?
- 29. UITableView Cell - nhận được IndexPath.row từ nút?
- 30. Làm thế nào để seque một lớp con của UITableViewCell?
có thể trùng lặp ăn của [IOS 7 - Cách lấy indexPath từ nút được đặt trong UITableViewCell] (http://stackoverflow.com/questions/19000356/ios-7-how-to-get-the-indexpath-from-button-placed- in-uitableviewcell) –