12

Tôi đang sử dụng chức năng này để chuyển giữa các chế độ xem trong Xcode 4.3.Chuyển biến giữa các trình điều khiển chế độ xem

[self performSegueWithIdentifier:@"NextView" sender:self]; 

Tôi muốn chuyển một số thông số giữa các trang. Làm thế nào tôi có thể làm điều đó?

+0

đã làm u cố gắng sử dụng Navigation điều khiển để thay thế. nó thực sự đơn giản để vượt qua các giá trị – WaaleedKhan

+0

không, tôi đã không thử Điều khiển Điều hướng. Tôi sử dụng nút thông thường và segue trong bảng phân cảnh. – bla0009

Trả lời

40

Sau performSegueWithIdentifier:sender: xem khiển của bạn sẽ gọi

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

giả sử điều khiển xem mới của bạn có một số các thuộc tính cần đặt:

if ([[segue identifier] isEqualToString:@"NextView"]) { 
    MyViewController *myVC = [segue destinationViewController]; 
    myVC.propertyToSet = // set your properties here 
} 
+0

vì vậy, tôi đặt thuộc tính như bạn đã nói và cách tôi có thể đọc giá trị từ thuộc tính đó. Và ngoài ra, nếu tôi cần phải chuyển nhiều biến cho chế độ xem tiếp theo thì sao? – bla0009

+0

Đối với nhiều biến sử dụng nhiều thuộc tính và để đọc từ việc sử dụng thuộc tính ... = self.property (trong bộ điều khiển xem nơi bạn đã xác định thuộc tính đó) – Pfitz

+0

Tôi hiểu điều đó, nhưng tôi không biết cách lấy dữ liệu đó trong " NextView ". – bla0009

5

Câu hỏi này có một lời giải thích rất đẹp và chính xác của dữ liệu đi qua giữa quan điểm điều khiển:

Passing Data between View Controllers

+1

có nó là tốt đẹp giải thích trên trang đó, nhưng họ đang sử dụng pushViewController cho thay đổi xem, nhưng tôi muốn sử dụng performSegueWithIdentifier. – bla0009

3

Dưới đây là câu trả lời từ Pfitz, nhưng tôi đã làm cho nó một chút dễ dàng hơn để hiểu cho folks người chưa quen với Objective-C sử dụng một ví dụ:

  1. Trong file destinationViewController.h bạn thêm cài đặt tài sản để biến 'nhận' giá trị từ tập tin controller.m nguồn của bạn

    @property (nonatomic) int billIdReceivingVote; 
    
  2. nhập destinationViewController.h của bạn để tập sourceViewController.m của bạn:

    // VOLViewController.m 
    #import "VOLVoteViewController.h 
    
  3. Thêm prepareForSegue phương pháp để tập sourceViewController.m của bạn và vượt qua các biến

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    { 
        VOLVoteViewController *myDestinationViewController = [segue destinationViewController]; 
    
        // myDestinationViewController.variable = sourceViewController variabe 
        myDestinationViewController.billIdReceivingVote = [self.idOfBillSelected intValue]; 
    } 
    
Các vấn đề liên quan