2012-12-13 13 views
98

Tôi mới sử dụng IOS và mới bắt đầu sử dụng Xcode 4.5. Tôi đã thấy cho mọi viewController mà tôi có thể thiết lập một số biến số nhận dạng bao gồm ID bảng phân cảnh. Đây là gì và tôi có thể sử dụng nó như thế nào?ID StoryBoard là gì và tôi có thể sử dụng ID này như thế nào?

enter image description here

tôi bắt đầu tìm kiếm trên stackoverflow và không thể tìm thấy bất kỳ lời giải thích cho điều đó. Tôi cho rằng đó không chỉ là một số nhãn ngu ngốc mà tôi có thể đặt để nhớ bộ điều khiển của tôi đúng không? Nó làm gì?

Trả lời

117

ID bảng phân cảnh là trường Chuỗi mà bạn có thể sử dụng để tạo một ViewController mới dựa trên bảng điều khiển ViewController. Việc sử dụng ví dụ sẽ là từ bất kỳ ViewController:

//Maybe make a button that when clicked calls this method 

- (IBAction)buttonPressed:(id)sender 
{ 
    MyCustomViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 

    [self presentViewController:vc animated:YES completion:nil]; 
} 

này sẽ tạo ra một MyCustomViewController dựa trên kịch bản ViewController bạn có tên "MyViewController" và trình bày nó trên View Controller hiện tại của bạn

Và nếu bạn đang ở trong ứng dụng của bạn ủy bạn có thể sử dụng

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" 
                 bundle: nil]; 

Edit: Swift

@IBAction func buttonPressed(sender: AnyObject) { 
    let vc = storyboard?.instantiateViewControllerWithIdentifier("MyViewController") as MyCustomViewController 
    presentViewController(vc, animated: true, completion: nil) 
} 

Chỉnh sửa cho Swift> = 3:

@IBAction func buttonPressed(sender: Any) { 
    let vc = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! ViewController 
    present(vc, animated: true, completion: nil) 
} 

let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) 
+0

Hãy thử cách đó và cách bạn nhận được self.storyboard 'self.storyboard' – RTB

+0

self.storyboard có thể được truy cập từ bất kỳ bộ điều khiển xem nào. Tôi sẽ chỉnh sửa câu trả lời của tôi ngay bây giờ để bạn có thể xem – Eric

+0

Và điều gì sẽ xảy ra nếu cần truy cập nó từ AppDelegate của tôi hoặc bất kỳ lớp nào khác? – RTB

7

Để thêm vào câu trả lời của Eric và cập nhật nó cho Xcode 8 và Swift 3:

Một ID kịch bản thực hiện chính xác những gì tên ngụ ý: nó xác định. Chỉ cần nó xác định một bộ điều khiển xem trong tệp bảng phân cảnh. Đó là cách bảng phân cảnh biết bộ điều khiển xem nào.

Bây giờ, đừng nhầm lẫn với tên. ID bảng phân cảnh không xác định 'bảng phân cảnh'. Bảng phân cảnh, theo tài liệu của Apple, 'đại diện cho bộ điều khiển chế độ xem cho tất cả hoặc một phần giao diện người dùng của ứng dụng của bạn.' Vì vậy, khi bạn có một cái gì đó giống như hình dưới đây, bạn có một bảng phân cảnh gọi là Main.storyboard có hai bộ điều khiển xem, mỗi bộ điều khiển có thể được cung cấp một ID bảng phân cảnh (ID của chúng trong bảng phân cảnh).

enter image description here

Bạn có thể sử dụng một cái nhìn khiển ID storyboard để nhanh chóng và trở lại mà điều khiển xem. Sau đó, bạn có thể tiếp tục thao tác và trình bày nó theo cách bạn muốn. Để sử dụng ví dụ của Eric, nói rằng bạn muốn trình bày một bộ điều khiển vùng đang xem với định danh 'MyViewController' khi một nút được nhấn, bạn sẽ làm điều đó theo cách này:

@IBAction func buttonPressed(sender: Any) { 
    // Here is where we create an instance of our view controller. instantiateViewController(withIdentifier:) will create an instance of the view controller every time it is called. That means you could create another instance when another button is pressed, for example. 
    let vc = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! ViewController 
    present(vc, animated: true, completion: nil) 
} 

Xin lưu ý những thay đổi trong cú pháp.

+0

Biểu tượng cảnh báo màu vàng cho biết là do trình điều khiển chế độ xem thứ hai không có điểm vào và/hoặc ID. Điều này có thể được giải quyết bằng cách cho nó một ID bảng phân cảnh hoặc kết nối nó với một bộ điều khiển khung nhìn khác trong bảng phân cảnh. Bằng cách đó, bảng phân cảnh biết cách tiếp cận và xác định nó. – Taiwosam

+0

Tôi không thể tìm thấy trường ID Storyboard, vì vậy cảm ơn cho hình ảnh. Nó ở cùng vị trí trên Xcode 9. –

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