2013-08-08 28 views
11

Tôi có một textField trong ViewController1 của mình. Tôi có một segue push để ViewController2 của tôi mà cũng có một textField. Tôi cần phải đặt textField.text trong ViewController2 của tôi bằng với văn bản trong textField trong ViewController1 của tôi. Đây là mã tôi có:Đặt thuộc tính văn bản UITextField trong preparForSegue

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqual:@"ViewController2"]) 
    { 
     ViewController2 *VCT = [segue destinationViewController]; 
     VCT.title = @"View Controller #2"; 
     VCT.textField.text = self.textField.text; 
    } 
} 

Bộ đặt tiêu đề hoạt động tốt. Tại sao textField không hoạt động?

+0

NSLog self.textField.text –

Trả lời

22

Bạn không thể đặt nội dung của UITextField (và bất kỳ thành phần khác như UILabelUITextView) trong chuẩn bị cho segue, bởi vì tất cả các thành phần quan điểm của bộ điều khiển thời gian gần đây được phân bổ không được khởi tạo chưa (vào thời điểm này, tất cả chúng đều nil), chúng sẽ chỉ xuất hiện khi viewController được trình bày (và nó được xem).

Bạn phải tạo thuộc tính NSString trong khung nhìn hiển thịController, và sau đó, ở đâu đó bên trong bộ điều khiển chế độ xem khác, như viewDidLoad, đặt văn bản của textField làm giá trị thuộc tính này.

Như thế này:

Trong viewController đó sẽ trình bày các khác viewController:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"ViewController2"]) 
    { 
     ViewController2 *vc2 = [segue destinationViewController]; 
     vc2.myString = self.textField.text; 
    } 
} 

Và bên trong viewController trình bày:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    (...) 
    self.textField.text = self.myString; 
} 
+3

Cuối cùng !! Cảm ơn bạn vì câu trả lời. –

0

Kiểm tra xem "VCT.textField" có phải là không tại thời điểm đó hay không. Tôi nghi ngờ rằng bạn sẽ tìm thấy nó là số không.

Bạn cần phải hiển thị nó qua "@property (strong) IBOutlet UITextField * textField" hoặc bạn cần lưu trữ chuỗi ở một nơi khác (ví dụ: thuộc tính "NSString"), sau đó tải trường văn bản khi chế độ xem được tải đầy đủ.

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