iOS Designer에서 테이블 작업Working with Tables in the iOS Designer

스토리 보드는 iOS 응용 프로그램을 만드는 WYSIWYG 방식 이며, Mac 및 Windows의 Visual Studio 내에서 지원 됩니다.Storyboards are a WYSIWYG way to create iOS applications, and are supported inside Visual Studio on Mac and Windows. Storyboard에 대 한 자세한 내용은 Storyboard 소개 문서를 참조 하세요.For more information on Storyboards, refer to the Introduction To Storyboards document. 또한 storyboard를 사용 하면 테이블 및 셀을 사용 하 여 개발을 간소화 하는 테이블 셀 레이아웃을 편집할 수 있습니다.Storyboards also allow you to edit the cell layouts in the table, which simplifies developing with tables and cells

IOS 디자이너에서 테이블 뷰의 속성을 구성할 때 선택할 수 있는 셀 내용에는 동적 또는 정적 프로토타입 콘텐츠의 두 가지 유형이 있습니다.When configuring properties of a table view in the iOS Designer, there are two types of cell content you can choose from: Dynamic or Static Prototype Content.

동적 프로토타입 콘텐츠Dynamic Prototype Content

프로토타입 콘텐츠가 포함 된 UITableView는 일반적으로 목록에 있는 각 항목에 대해 프로토타입 셀 (또는 둘 이상의 셀을 정의할 수 있는 셀)이 다시 사용 되는 데이터 목록을 표시 하기 위한 것입니다.A UITableView with prototype content is typically intended to display a list of data where the prototype cell (or cells, as you can define more than one) are re-used for each item in the list. 셀을 인스턴스화할 필요가 없으며, 해당 UITableViewSourceDequeueReusableCell 메서드를 호출 하 여 GetView 메서드에서 가져옵니다.The cells don’t need to be instantiated, they are obtained in the GetView method by calling the DequeueReusableCell method of its UITableViewSource.

정적 콘텐츠Static Content

정적 콘텐츠를 포함 하는 UITableView를 사용 하면 디자인 화면에서 바로 테이블을 디자인할 수 있습니다.UITableViews with static content allow tables to be designed right on the design surface. 셀은 테이블로 끌고 속성을 변경 하 고 컨트롤을 추가 하 여 사용자 지정할 수 있습니다.Cells can be dragged into the table and customized by changing properties and adding controls.

스토리 보드 기반 앱 만들기Creating a Storyboard-Driven App

StoryboardTable 예제에는 스토리 보드에서 두 가지 유형의 UITableView를 사용 하는 간단한 마스터-세부 앱이 포함 되어 있습니다.The StoryboardTable example contains a simple master-detail app that uses both types of UITableView in a Storyboard. 이 섹션의 나머지 부분에서는 완료 시 다음과 같이 표시 되는 작은 할 일 목록 예제를 빌드하는 방법에 대해 설명 합니다.The remainder of this section describes how to build a small to-do list example that will look like this when complete:

예제 화면Example screens

사용자 인터페이스는 storyboard를 사용 하 여 작성 되 고 두 화면에서는 UITableView를 사용 합니다.The user-interface will be built with a storyboard, and both screens will use a UITableView. 주 화면에서는 프로토타입 콘텐츠 를 사용 하 여 행을 레이아웃 하 고 세부 정보 화면에서는 정적 콘텐츠 를 사용 하 여 사용자 지정 셀 레이아웃을 사용 하 여 데이터 입력 폼을 만듭니다.The main screen uses prototype content to layout the row, and the detail screen uses static content to create a data-entry form using custom cell layouts.

연습Walkthrough

(만들기) 새 프로젝트를 사용 하 여 Visual Studio에서 새 솔루션을 만듭니다. 단일 뷰 앱 (C#)을 > 하 고 _StoryboardTables_를 호출 합니다.Create a new solution in Visual Studio using (Create) New Project… > Single View App(C#), and call it StoryboardTables.

새 프로젝트 대화 상자만들기Create a new project dialog

이 솔루션은 일부 C# 파일과Main.storyboard파일이 이미 생성 된 상태로 열립니다.The solution will open with some C# files and a Main.storyboard file already created. Main.storyboard 파일을 두 번 클릭 하 여 iOS 디자이너에서 엽니다.Double-click the Main.storyboard file to open it in the iOS Designer.

스토리 보드 수정Modifying the Storyboard

스토리 보드는 다음 세 단계로 편집 됩니다.The storyboard will be edited in three steps:

  • 먼저 필요한 뷰 컨트롤러를 레이아웃 하 고 해당 속성을 설정 합니다.First, layout the required view controllers and set their properties.
  • 둘째, 개체를 뷰에서 끌어서 놓아 UI를 만듭니다.Second, create your UI by dragging and dropping objects onto your view
  • 마지막으로, 각 뷰에 필요한 UIKit 클래스를 추가 하 고 코드에서 참조할 수 있도록 여러 컨트롤의 이름을 지정 합니다.Finally, add the required UIKit class to each view and give various controls a name so they can be referenced in code.

스토리 보드가 완료 되 면 코드를 추가 하 여 모든 작업을 수행할 수 있습니다.Once the storyboard is complete, code can be added to make everything work.

뷰 컨트롤러 레이아웃Layout The View Controllers

스토리 보드의 첫 번째 변경 내용은 기존 세부 정보 보기를 삭제 하 고 UITableViewController로 바꾸는 것입니다.The first change to the storyboard is deleting the existing Detail view and replacing it with a UITableViewController. 아래 단계를 수행합니다.Follow these steps:

  1. 뷰 컨트롤러의 맨 아래에 있는 막대를 선택 하 고 삭제 합니다.Select the bar at the bottom of the View Controller and delete it.

  2. 도구 상자에서 탐색 컨트롤러테이블 뷰 컨트롤러 를 스토리 보드로 끕니다.Drag a Navigation Controller and a Table View Controller onto the Storyboard from the Toolbox.

  3. 루트 뷰 컨트롤러에서 방금 추가 된 두 번째 테이블 뷰 컨트롤러로 segue를 만듭니다.Create a segue from the Root View Controller to the second Table View Controller that was just added. Segue를 만들려면 정보 셀에서 새로 추가 된 UITableViewController로 컨트롤을 끌어 놓습니다.To create the segue, Control+drag from the Detail cell to the newly added UITableViewController. Segue 선택아래에서 표시 옵션을 선택 합니다.Choose the option Show under Segue Selection.

  4. 만든 새 segue를 선택 하 고 코드에서이 segue를 참조 하는 식별자를 제공 합니다.Select the new segue you created and give it an identifier to reference this segue in code. Segue을 클릭 하 고 다음과 같이 Properties Pad 식별자 에 대 한 TaskSegue를 입력 합니다.Click on the segue and enter TaskSegue for the Identifier in the Properties Pad, like this:
    속성 패널의명명 segueNaming segue in property panel

  5. 그런 다음 두 테이블 뷰를 선택 하 고 Properties Pad 사용 하 여 구성 합니다.Next, configure the two Table Views by selecting them and using the Properties Pad. 보기를 선택 하 고 보기 컨트롤러를 선택 하지 마십시오. 문서 개요를 사용 하 여 선택 항목에 대 한 도움말을 볼 수 있습니다.Make sure to select View and not View Controller – you can use the Document Outline to help with selection.

  6. 루트 뷰 컨트롤러를 콘텐츠 (동적 프로토타입 )로 변경 합니다. 즉, Design Surface에 대 한 뷰에는 프로토타입 콘텐츠가 레이블이 표시 됩니다.Change the Root View Controller to be Content: Dynamic Prototypes (the View on the Design Surface will be labelled Prototype Content ):

    콘텐츠 속성을 동적 프로토타입으로 설정Setting the Content property to dynamic prototypes

  7. Uitableviewcontroller콘텐츠: 정적 셀로 변경 합니다.Change the new UITableViewController to be Content: Static Cells.

  8. 새 UITableViewController에는 클래스 이름과 식별자가 설정 되어 있어야 합니다.The new UITableViewController must have its class name and identifier set. 뷰 컨트롤러를 선택 하 고 Properties Pad 클래스 에 대해 TaskDetailViewController 를 입력 합니다. 이렇게 하면 Solution Pad에 새 TaskDetailViewController.cs 파일이 만들어집니다.Select the View Controller and type TaskDetailViewController for the Class in the Properties Pad – this will create a new TaskDetailViewController.cs file in the Solution Pad. 아래 예제에 나와 있는 것 처럼 StoryboardID 를 _세부 정보_로 입력 합니다.Enter the StoryboardID as detail, as illustrated in the example below. 나중에 코드에서 C# 이 뷰를 로드 하는 데 사용 됩니다.This will be used later to load this view in C# code:

    스토리 보드 ID 설정Setting the Storyboard ID

  9. 이제 스토리 보드 디자인 화면이 다음과 같이 표시 됩니다. 루트 뷰 컨트롤러의 탐색 항목 제목이 "Chore Board"로 변경 되었습니다.The storyboard design surface should now look like this (the Root View Controller's navigation item title has been changed to “Chore Board”):

    디자인 화면Design surface

UI 만들기Create the UI

이제 뷰와 segue를 구성 했으므로 사용자 인터페이스 요소를 추가 해야 합니다.Now that the views and segues are configured, the user interface elements need to be added.

루트 뷰 컨트롤러Root View Controller

먼저 아래 그림과 같이 마스터 뷰 컨트롤러에서 프로토타입 셀을 선택 하 고 id 를 _taskcell_으로 설정 합니다.First, select the prototype cell in the Master View Controller and set the Identifier as taskcell, as illustrated below. 이는 나중에 코드에서이 UITableViewCell의 인스턴스를 검색 하는 데 사용 됩니다.This will be used later in code to retrieve an instance of this UITableViewCell:

셀 식별자를 설정 하는setting the cell identifier

다음으로, 아래 그림과 같이 새 작업을 추가 하는 단추를 만들어야 합니다.Next, you'll need to create a button that will add new tasks, as illustrated below:

탐색 모음의막대 단추 항목bar button item in the navigation bar

다음을 수행합니다.Do the following:

  • 도구 상자에서 _탐색 모음의 오른쪽_으로 막대 단추 항목 을 끕니다.Drag a Bar Button Item from the Toolbox to the right hand side of the navigation bar.
  • Properties Pad표시줄 단추 항목 에서 식별자: 추가 를 선택 하 여 + + 단추를 만듭니다.In the Properties Pad, under Bar Button Item select Identifier: Add (to make it a + plus button).
  • 이후 단계에서 코드에서 식별할 수 있도록 이름을 지정 합니다.Give it a Name so that it can be identified in code at a later stage. 사용자가 막대 단추 항목의 이름을 설정할 수 있도록 루트 뷰 컨트롤러에 클래스 이름 (예: Itemviewcontroller)을 지정 해야 합니다.Note that you will need to give the Root View Controller a Class Name (for example ItemViewController) to allow you to set the Bar button item's name.

TaskDetail 뷰 컨트롤러TaskDetail View Controller

자세히 보기에는 많은 작업이 필요 합니다.The Detail View requires a lot more work. 테이블 뷰 셀을 뷰로 끌어온 다음 레이블, 텍스트 보기 및 단추를 사용 하 여 채워야 합니다.Table View Cells need to be dragged onto the view and then populated with labels, text views and buttons. 아래 스크린샷에서는 두 개의 섹션이 있는 완성 된 UI를 보여 줍니다.The screenshot below shows the finished UI with two sections. 한 섹션에는 세 개의 셀, 세 개의 레이블, 두 개의 텍스트 필드와 하나의 스위치가 있으며 두 번째 섹션에는 두 개의 단추가 있는 하나의 셀이 있습니다.One section has three cells, three labels, two text fields and one switch, while the second section has one cell with two buttons:

세부 정보 보기 레이아웃detail view layout

전체 레이아웃을 작성 하는 단계는 다음과 같습니다.The steps to build the complete layout are:

테이블 뷰를 선택 하 고 속성 패드를 엽니다.Select the table view and open the Property Pad. 다음 속성을 업데이트 합니다.Update the following properties:

  • 섹션: 2Sections: 2
  • 스타일: 그룹화Style: Grouped
  • 구분 기호: 없음Separator: None
  • 선택항목: 선택 항목 없음Selection: No Selection

아래 그림과 같이 위쪽 섹션을 선택 하 고 속성 > 테이블 뷰 섹션 에서 을 _3_으로 변경 합니다.Select the top section and under Properties > Table View Section change Rows to 3, as illustrated below:

위쪽 섹션을 3 개의 행으로 설정setting the top section to three rows

각 셀에 대해 Properties Pad 을 열고 다음을 설정 합니다.For each cell open the Properties Pad and set:

  • 스타일: 사용자 지정Style: Custom
  • 식별자: 각 셀에 대 한 고유 식별자를 선택 합니다 (예:Identifier: Choose a unique identifier for each cell (eg. "제목", "메모", "완료").title”, “notes”, “done”).
  • 필요한 컨트롤을 끌어 스크린샷에 표시 된 레이아웃 ( UILabel, uitextfieldUISwitch 를 올바른 셀에 생성 하 고 레이블을 적절 하 게 설정 합니다. 제목, 메모 및 완료).Drag the required controls to produce the layout shown in the screenshot (place UILabel, UITextField and UISwitch on the correct cells, and set the labels appropriately, ie. Title, Notes and Done).

두 번째 섹션에서 1 로 설정 하 고 셀의 아래쪽 크기 조정 핸들을 사용 하 여 셀을 더 길게 만듭니다.In the second section, set Rows to 1 and grab the bottom resize handle of the cell to make it taller.

  • 식별자를 고유한 값으로 설정 합니다 (예:Set the Identifier: to a unique value (eg. "저장").“save”).

  • 배경: 색 지우기 를 설정합니다.Set the Background: Clear Color .

  • 아래 그림과 같이 두 단추를 셀로 끌고 해당 제목을 적절 하 게 설정 합니다 (예: 저장삭제).Drag two buttons onto the cell and set their titles appropriately (i.e. Save and Delete), as illustrated below:

    아래쪽 섹션에서 두 단추를 설정 하는setting two buttons in the bottom section

이때 셀과 컨트롤에 대 한 제약 조건을 설정 하 여 적응 레이아웃을 확인할 수도 있습니다.At this point you may also want to set constraints on your cells and controls to ensure an adaptive layout.

UIKit 클래스 및 명명 컨트롤 추가Adding UIKit Class and Naming Controls

스토리 보드를 만드는 마지막 단계는 몇 가지입니다.There are a few final steps in creating our Storyboard. 먼저 코드에서 나중에 사용할 수 있도록 id > name 아래에 있는 각 컨트롤의 이름을 지정 해야 합니다.First we must give each of our controls a name under Identity > Name so they can be used in code later on. 다음과 같이 이름을로 합니다.Name these as follows:

  • 제목 UITextField : TitleTextTitle UITextField : TitleText
  • 참고 UITextField : notestextNotes UITextField : NotesText
  • UISwitch : DoneSwitchUISwitch : DoneSwitch
  • Uibutton 삭제 : deletebuttonDelete UIButton : DeleteButton
  • Uibutton 저장 : savebuttonSave UIButton : SaveButton

코드 추가Adding Code

나머지 작업은 Mac의 Visual Studio 또는의 Windows에서 수행 됩니다 C#.The remainder of the work will be done in Visual Studio on Mac or Windows with C#. 코드에 사용 되는 속성 이름은 위의 연습에서 설정한 속성을 반영 합니다.Note that the property names used in code reflect those set in the walkthrough above.

먼저 응용 프로그램 전체에서 해당 값을 사용할 수 있도록 ID, 이름, 메모 및 완료 부울 값을 가져오고 설정 하는 방법을 제공 하는 Chores 클래스를 만들려고 합니다.First we want to create a Chores class, which will provide a way to get and set the value of ID, Name, Notes and the Done Boolean, so that we can use those values throughout the application.

Chores 클래스에서 다음 코드를 추가 합니다.In your Chores class add the following code:

public class Chores {
    public int Id { get; set; }
    public string Name { get; set; }
    public string Notes { get; set; }
    public bool Done { get; set; }
  }

다음으로 UITableViewSource에서 상속 되는 RootTableSource 클래스를 만듭니다.Next, create a RootTableSource class that inherits from UITableViewSource.

이와 비 Storyboard 테이블 뷰의 차이점은 GetView 메서드에서는 셀을 인스턴스화할 필요가 없다는 것입니다. theDequeueReusableCell 메서드는 항상 프로토타입 셀 (일치 하는 식별자 사용)의 인스턴스를 반환 합니다.The difference between this and a non-Storyboard table view is that the GetView method doesn’t need to instantiate any cells – theDequeueReusableCell method will always return an instance of the prototype cell (with matching identifier).

아래 코드는 RootTableSource.cs 파일에 있습니다.The code below is from the RootTableSource.cs file:

public class RootTableSource : UITableViewSource
{
// there is NO database or storage of Tasks in this example, just an in-memory List<>
Chores[] tableItems;
string cellIdentifier = "taskcell"; // set in the Storyboard

    public RootTableSource(Chores[] items)
    {
        tableItems = items;
    }

public override nint RowsInSection(UITableView tableview, nint section)
{
  return tableItems.Length;
}

public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
  // in a Storyboard, Dequeue will ALWAYS return a cell, 
  var cell = tableView.DequeueReusableCell(cellIdentifier);
  // now set the properties as normal
  cell.TextLabel.Text = tableItems[indexPath.Row].Name;
  if (tableItems[indexPath.Row].Done)
    cell.Accessory = UITableViewCellAccessory.Checkmark;
  else
    cell.Accessory = UITableViewCellAccessory.None;
  return cell;
}
public Chores GetItem(int id)
{
  return tableItems[id];
}

RootTableSource 클래스를 사용 하려면 ItemViewController의 생성자에 새 컬렉션을 만듭니다.To use the RootTableSource class, create a new collection in the ItemViewController’s constructor:

chores = new List<Chore> {
      new Chore {Name="Groceries", Notes="Buy bread, cheese, apples", Done=false},
      new Chore {Name="Devices", Notes="Buy Nexus, Galaxy, Droid", Done=false}
    };

에서 컬렉션을 원본으로 전달 하 고 테이블 뷰에 할당 ViewWillAppear 합니다.In ViewWillAppear pass the collection to the source and assign to the table view:

public override void ViewWillAppear(bool animated)
{
    base.ViewWillAppear(animated);

    TableView.Source = new RootTableSource(chores.ToArray());
}

이제 앱을 실행 하면 주 화면이 로드 되어 두 작업의 목록이 표시 됩니다.If you run the app now, the main screen will now load and display a list of two tasks. 작업이 수행 되 면 storyboard에 의해 정의 된 segue가 세부 정보 화면을 표시 하지만 현재 데이터를 표시 하지 않습니다.When a task is touched the segue defined by the storyboard will cause the detail screen to appear, but it will not display any data at the moment.

Segue의 ' 매개 변수 보내기 '로 PrepareForSegue 메서드를 재정의 하 고 DestinationViewController (이 예제에서는 TaskDetailViewController)에서 속성을 설정 합니다.To ‘send a parameter’ in a segue, override the PrepareForSegue method and set properties on the DestinationViewController (the TaskDetailViewController in this example). 대상 뷰 컨트롤러 클래스가 인스턴스화되어 사용자에 게 아직 표시 되지 않습니다. 즉, 클래스에서 속성을 설정할 수 있지만 UI 컨트롤을 수정할 수는 없습니다.The Destination View Controller class will have been instantiated but is not yet displayed to the user – this means you can set properties on the class but not modify any UI controls:

public override void PrepareForSegue (UIStoryboardSegue segue, NSObject sender)
    {
      if (segue.Identifier == "TaskSegue") { // set in Storyboard
        var navctlr = segue.DestinationViewController as TaskDetailViewController;
        if (navctlr != null) {
          var source = TableView.Source as RootTableSource;
          var rowPath = TableView.IndexPathForSelectedRow;
          var item = source.GetItem(rowPath.Row);
          navctlr.SetTask (this, item); // to be defined on the TaskDetailViewController
        }
      }
    }

TaskDetailViewController에서 SetTask 메서드는 속성에 해당 매개 변수를 할당 하므로 ViewWillAppear에서 참조할 수 있습니다.In TaskDetailViewController the SetTask method assigns its parameters to properties so they can be referenced in ViewWillAppear. PrepareForSegue를 호출할 때 컨트롤 속성을 SetTask 수정할 수 없습니다.The control properties cannot be modified in SetTask because may not exist when PrepareForSegue is called:

Chore currentTask {get;set;}
    public ItemViewController Delegate {get;set;} // will be used to Save, Delete later

public override void ViewWillAppear (bool animated)
    {
      base.ViewWillAppear (animated);
      TitleText.Text = currentTask.Name;
      NotesText.Text = currentTask.Notes;
      DoneSwitch.On = currentTask.Done;
    }

    // this will be called before the view is displayed
    public void SetTask (ItemViewController d, Chore task) {
      Delegate = d;
      currentTask = task;
    }

이제 segue가 세부 정보 화면을 열고 선택한 작업 정보를 표시 합니다.The segue will now open the detail screen and display the selected task information. 그러나 저장삭제 단추에 대 한 구현은 없습니다.Unfortunately there is no implementation for the Save and Delete buttons. 단추를 구현 하기 전에 다음 메서드를 ItemViewController.cs 에 추가 하 여 기본 데이터를 업데이트 하 고 세부 정보 화면을 닫습니다.Before implementing the buttons, add these methods to ItemViewController.cs to update the underlying data and close the detail screen:

public void SaveTask(Chores chore)
{
  var oldTask = chores.Find(t => t.Id == chore.Id);
        NavigationController.PopViewController(true);
}

public void DeleteTask(Chores chore)
{
  var oldTask = chores.Find(t => t.Id == chore.Id);
  chores.Remove(oldTask);
        NavigationController.PopViewController(true);
}

다음으로 TaskDetailViewController.csViewDidLoad 메서드에 단추의 TouchUpInside 이벤트 처리기를 추가 해야 합니다.Next, you'll need to add the button's TouchUpInside event handler to the ViewDidLoad method of TaskDetailViewController.cs. ItemViewController에 대 한 Delegate 속성 참조가 특별히 생성 되었으므로 SaveTaskDeleteTask를 호출 하 여 작업의 일부로이 뷰를 닫을 수 있습니다.The Delegate property reference to the ItemViewController was created specifically so we can call SaveTask and DeleteTask, which close this view as part of their operation:

SaveButton.TouchUpInside += (sender, e) => {
        currentTask.Name = TitleText.Text;
        currentTask.Notes = NotesText.Text;
        currentTask.Done = DoneSwitch.On;
        Delegate.SaveTask(currentTask);
      };

DeleteButton.TouchUpInside += (sender, e) => Delegate.DeleteTask(currentTask);

빌드에 대 한 마지막 남은 기능은 새 작업을 만드는 것입니다.The last remaining piece of functionality to build is the creation of new tasks. ItemViewController.cs 에서 새 작업을 만들고 자세히 보기를 여는 메서드를 추가 합니다.In ItemViewController.cs add a method that creates new tasks and opens the detail view. 스토리 보드에서 뷰를 인스턴스화하려면 해당 보기에 대 한 Identifier InstantiateViewController 메서드를 사용 합니다 .이 예제에서는 ' 세부 정보 '가 됩니다.To instantiate a view from a storyboard use the InstantiateViewController method with the Identifier for that view - in this example that will be 'detail':

public void CreateTask () 
    {
      // first, add the task to the underlying data
      var newId = chores[chores.Count - 1].Id + 1;
      var newChore = new Chore{Id = newId};
      chores.Add (newChore);

      // then open the detail view to edit it
      var detail = Storyboard.InstantiateViewController("detail") as TaskDetailViewController;
      detail.SetTask (this, newChore);
      NavigationController.PushViewController (detail, true);
    }

마지막으로 ItemViewController.csViewDidLoad 메서드의 탐색 모음에 있는 단추를 연결 하 여 호출 합니다.Finally, wire up the button in the navigation bar in ItemViewController.cs's ViewDidLoad method to call it:

AddButton.Clicked += (sender, e) => CreateTask ();

스토리 보드 예제를 완료 합니다. 완성 된 앱은 다음과 같습니다.That completes the Storyboard example – the finished app looks like this:

완성 된 앱Finished app

예제에서는 다음을 보여 줍니다.The example demonstrates:

  • 데이터 목록을 표시 하기 위해 다시 사용 하도록 셀이 정의 된 프로토타입 콘텐츠가 있는 테이블을 만듭니다.Creating a table with Prototype Content where cells are defined for re-use to display lists of data.
  • 정적 콘텐츠를 사용 하 여 테이블을 만들어 입력 폼을 작성 합니다.Creating a table with Static Content to build an input form. 여기에는 테이블 스타일 변경 및 섹션, 셀 및 UI 컨트롤 추가가 포함 됩니다.This included changing the table style and adding sections, cells and UI controls.
  • Segue을 만들고 PrepareForSegue 메서드를 재정의 하 여 필요한 매개 변수의 대상 뷰에 알리도록 하는 방법입니다.How to create a segue and override the PrepareForSegue method to notify the target view of any parameters it requires.
  • Storyboard.InstantiateViewController 메서드를 사용 하 여 스토리 보드 뷰를 직접 로드 합니다.Loading storyboard views directly with the Storyboard.InstantiateViewController method.