ios uicollectionview inside uitableviewcell




self.tableView.delegate=자기 스위프트 (2)

실제 뷰 컨트롤러에 self.tableView.delegate = self를 추가해야합니까?

아니, 스토리 보드에서 연결을하면됩니다. 그것들은 정확히 똑같은 것입니다 : delegate 속성에 대한 할당은 두 가지 방식으로 표현됩니다 (하나는 코드로, 하나는 Interface Builder에서 "그래픽으로"). 그 중 하나만하면됩니다.

그러나보기 컨트롤러가 테이블보기 컨트롤러 (UITableViewController 하위 클래스) 인 경우에는 테이블보기 컨트롤러가 이미 테이블보기의 데이터 소스 및 대리인이므로 둘 다 수행하지 않습니다 . 컬렉션 뷰 컨트롤러 (UICollectionViewController 하위 클래스)에서도 마찬가지입니다. 이미 콜렉션 뷰의 데이터 소스 및 델리게이트입니다.

UIViewController 있고 스토리 보드에서 tableView 연결하는 경우, tableview 콘센트를 연결하고 연결 관리자 (cntrl + vc 주황색 원으로 아이콘을 끌어다) 통해 데이터 원본 및 대리자 메서드를 연결하는, 여전히 추가해야합니까 self.tableView.delegate = self를 실제 View Controller에 연결 하시겠습니까? 물론 실제의 VC에서 나는 tableView 데이터 / 위임 프로토콜을 구현하고있다.

또한 같은 방법으로 스토리 보드를 통해 연결되는 콜렉션 뷰 컨트롤러에 대해 동일한 대답이 나온다고 가정합니다.

그것을 추가하는 장단점은 무엇입니까?

class FooController:UIViewController, UITableViewDataSource, UITableViewDelegate{


@IBOutlet weak var tableView: UITableView!


override func viewDidLoad() {
      super.viewDidLoad()
      self.tableView.delegate = self
   }


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
{


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
{
    }

나는 Matt와 Quang의 대답에 모두 동의하지만 때로는 다른 ViewController 클래스에서 같은 tableview와 그 delegate & data 소스를 재사용해야한다. 데이터 소스와 아웃렛에 대한 콘센트와의 연결은 delegate 메소드가 호출되지 않을 수도있는 작업이 아닐 수도있다.

예 -

나는 ViewController (클래스 A)와 tableview.I이 컨트롤러 전체보기를 다른 클래스 (클래스 B)로 재사용해야합니다.

A.view.addSubview (B.view)

그래서이 경우 아래 코드를 작성해야합니다.

Class A:UIViewController, UITableViewDataSource, UITableViewDelegate{


@IBOutlet weak var tableView: UITableView!


override func viewDidLoad() {
      super.viewDidLoad()
      self.tableView.delegate = self
      self.tableView.datasource = self 
   }


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
{


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  }




uicollectionview