StoryBoard ID는 무엇이며 어떻게 사용할 수 있습니까?


110

나는 IOS 개발을 처음 접했고 최근 Xcode 4.5에서 시작했습니다. 모든 viewController에 대해 스토리 보드 ID를 포함하여 일부 ID 변수를 설정할 수 있음을 확인했습니다. 이것은 무엇이며 어떻게 사용할 수 있습니까?

여기에 이미지 설명 입력

나는 stackoverflow에서 검색을 시작했고 그것에 대한 설명을 찾을 수 없었습니다. 컨트롤러를 기억하도록 설정할 수있는 멍청한 레이블이 아니라고 생각 했습니까? 그것은 무엇을합니까?

답변:


132

스토리 보드 ID는 해당 스토리 보드 ViewController를 기반으로 새 ViewController를 만드는 데 사용할 수있는 문자열 필드입니다. 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];
}

그러면 "MyViewController"라고 명명 한 스토리 보드 ViewController를 기반으로 MyCustomViewController가 생성되고 현재보기 컨트롤러 위에 표시됩니다.

그리고 앱 델리게이트에 있다면

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

편집 : 스위프트

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

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)

시도해 봅시다. self.storyboard
RTB

self.storyboard는 모든 뷰 컨트롤러에서 액세스 할 수 있습니다. 당신이 볼 수 있도록 나는 지금 내 대답을 편집합니다
에릭

내 AppDelegate 또는 다른 클래스에서 액세스해야하는 경우 어떻게해야합니까?
RTB

파일에서 스토리 보드에 액세스하는 방법을 보여주는 또 다른 편집을 추가했습니다.
에릭

1
self.storyboard스토리 보드에서로드 된 모든 뷰 컨트롤러에서 액세스 할 수 있습니다. 뷰 컨트롤러가 스토리 보드에서로드되지 않은 경우 해당 속성은 nil입니다.
rob mayoff dec

13

Eric의 답변에 추가하고 Xcode 8 및 Swift 3에 대해 업데이트하려면

스토리 보드 ID는 이름이 의미하는대로 정확히 식별합니다. 스토리 보드 파일에서 뷰 컨트롤러식별 하기 만하면 됩니다. 스토리 보드가 어떤 뷰 컨트롤러가 어떤 것인지 아는 방법입니다.

이제 이름으로 혼동하지 마십시오. 스토리 보드 ID는 '스토리 보드'를 식별하지 않습니다. Apple의 문서에 따르면 스토리 보드는 '앱의 사용자 인터페이스 전체 또는 일부에 대한 뷰 컨트롤러를 나타냅니다.' 따라서 아래 그림과 같은 것이 있으면 Main.storyboard라는 스토리 보드가 있으며 여기에는 두 개의 뷰 컨트롤러가 있으며 각 컨트롤러에는 스토리 보드 ID (스토리 보드의 해당 ID)가 제공 될 수 있습니다.

여기에 이미지 설명 입력

뷰 컨트롤러의 스토리 보드 ID를 사용하여 해당 뷰 컨트롤러를 인스턴스화하고 반환 할 수 있습니다. 그런 다음 원하는대로 조작하고 제시 할 수 있습니다. Eric의 예제를 사용하려면 버튼을 눌렀을 때 식별자 'MyViewController'가있는 뷰 컨트롤러를 제시하고 싶다면 다음과 같이하면됩니다.

@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)
}

구문 변경 사항에 유의하십시오.


노란색 경고 아이콘은 두 번째 뷰 컨트롤러에 진입 점 및 / 또는 ID가 없다는 사실 때문입니다. 이는 스토리 보드 ID를 제공하거나 스토리 보드의 다른 뷰 컨트롤러에 연결하여 해결할 수 있습니다. 이렇게하면 스토리 보드가이를 식별하고 도달하는 방법을 알고 있습니다.
Taiwosam

스토리 보드 ID 필드를 찾을 수 없어서 사진 감사합니다. Xcode 9에서도 동일한 위치에 있습니다.
Isaac Bosca
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.