2013-02-11 26 views
16
if([segue.identifier isEqualToString:@"Edit"]){ 

    AddCoffeeViewController *avc = [segue destinationViewController]; 

    Coffee *coffeeObj = [appDelegate.coffeeArray objectAtIndex:arow]; 
    NSLog(@"ViewController.m prepareForSegue: arow: %d coffeeName:%@ price:%@  coffeeID:%d",arow,coffeeObj.coffeeName,coffeeObj.price,coffeeObj.coffeeID); 
    [coffeeObj setIsInEditMode:YES]; 
    avc.EditCoffeeObj = coffeeObj; 


} 

Tôi không nhận được hàng chính xác khi tôi nhấn nút phụ kiện.

Mặc dù trong phương thức dưới đây tôi đang nhận được hàng chính xác. Có cách nào mà tôi có thể có được hàng chính xác chuẩn bị cho segue nếu tôi không muốn sử dụng bất kỳ ivar.hàng đường dẫn không được chuẩn bị cho segue để tiết lộ chi tiết

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{ 

arow = indexPath.row; 

} 

enter image description here


tableViewCell nút phụ kiện: Thực hiện segue modal (Chỉnh sửa)
+ Nút (Navigation nút thanh Item): Thực hiện segue modal (Add)

+0

Tại sao không chỉ cần đặt chuẩn bị cho segue trực tiếp bên accessoryButtonTappedForRowWithIndexPath? –

+0

Tôi muốn chuyển đối tượng lớp cà phê. nếu sử dụng [self performSegueWithIdentifier: @ "Edit" sender: nil]; sau đó là có bất kỳ mà tôi có thể vượt qua đối tượng lớp cà phê là tốt. –

+0

LƯU Ý: Gọi segue từ một nút phụ kiện lần đầu tiên được giới thiệu trong iOS6. Cách giải quyết tốt là tạo một ô tùy chỉnh và thêm nút vào ô đó và gọi segue từ nút đó. – Groot

Trả lời

34

Nếu bạn đã kết nối hành động phụ kiện trong bảng phân cảnh của mình thì sender trong prepareForSegue:sender: sẽ là ô đã được nhấn. Điều này có nghĩa bạn chỉ có thể làm điều gì đó như

NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; 
+0

hey giải pháp của bạn là chính xác. Cảm ơn rất nhiều. Tôi không hiểu tại sao một số người đang đưa ra bài tiêu cực cho câu hỏi của tôi. Chỉ cần thử nó ra bạn sẽ phải đối mặt với cùng một vấn đề. –

+0

Yêu bạn dude. Cảm ơn rất nhiều –

+0

cảm ơn rất nhiều anh chàng. – shaikh

3

nút Phụ kiện khai thác và hàng đã chọn là hai thứ khác nhau. Trong accessoryButtonTappedForRowWithIndexPath, chỉ cần đặt indexPath thành một biến toàn cầu và sau đó sử dụng nó trong phân đoạn.

0

SWIFT Solution 3.0; Rất giống với phiên bản Objective-C. Vì vậy, di động là người gửi và chúng tôi nhận được indexPath qua di trong đó phụ kiện ép

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let destination = segue.destination as? YourViewController { 
     let indexPath = tableView.indexPath(for: sender as! UITableViewCell)! 
    } 
} 
Các vấn đề liên quan