2017-05-04 10 views
1

목록 컨트롤러가 비어있는 경우 일부 TabletController에 UIImageView, 텍스트 및 링크가있는보기를 표시해야합니다.Swift - 복잡한보기 Storyboard를 통해 빈 목록이있는 UITableViewController보기

func numberOfSections(in tableView: UITableView) -> Int 
{ 
    var numOfSections: Int = 0 
    if youHaveData 
    { 
     tableView.separatorStyle = .singleLine 
     numOfSections   = 1 
     tableView.backgroundView = nil 
    } 
    else 
    { 
     let noDataLabel: UILabel  = UILabel(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: tableView.bounds.size.height)) 
     noDataLabel.text   = "No data available" 
     noDataLabel.textColor  = UIColor.black 
     noDataLabel.textAlignment = .center 
     tableView.backgroundView = noDataLabel 
     tableView.separatorStyle = .none 
    } 
    return numOfSections 
} 

하지만 난 다른의 ViewController에서 스토리 보드 설계 복잡한보기를 표시해야하는 것 :

난 당신이 코드를 통해 라벨을 삽입 할 수 있습니다 알고 있습니다.

가 emptyView이 방법으로 정의된다
let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let emptyViewController = storyboard.instantiateViewController(withIdentifier :"empty_controller") as! EmptyViewController 
tableView.backgroundView = emptyViewController.emptyView 

class EmptyViewController: UIViewController { 
    @IBOutlet weak var emptyView: UIView? 

    ... 
} 

하지만, 작동하지 않는 목록 만약 내가 표에 해당 뷰를 볼 수 없습니다 :

나는이 함께 노력 비었다.

어떻게하면됩니까?

답변

0

가장 좋은 방법은 두 개의 컨테이너가있는 tableview와 하나 emptyVC 하나를보고 사용하는 것입니다 당신에게 많은 감사 다음 숨기기/숨기기를 해제하거나 제거/당신의 논리에 따라보기를 추가 할 수있는 컨테이너의 부모에

+0

네,하지만 다른 컨트롤러를 사용하고 싶습니다. UI 구성 요소를 삽입하십시오. – dayroma

+0

컨테이너 컨트롤러를 사용하면 상위 컨트롤러에 다른 컨트롤러를 임베드 할 수 있습니다. –

0

EmptyViewController은 고유 한 view을 가지고 있는데 왜 emptyView을 새로 만들어야합니까?

원격 emptyView 재산이 코드를 사용 : 당신이 UITableViewDelegate에서 상속하고 VC를 가리 키도록 tableView.delegate을 설정하는 컨트롤러를 볼

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let emptyViewController = storyboard.instantiateViewController(withIdentifier :"empty_controller") as! EmptyViewController 
tableView.backgroundView = emptyViewController.view 
0

세트.

class VC : UITableViewController, UITableViewDelegate { 
    override func viewDidLoad() { 
     ... 
     tableView.delegate = self 
    } 
} 

그런 다음 당신의 tableview 섹션에 헤더를 추가 할 것입니다 다음과 같은 두 가지 기능

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 

} 
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 

} 

이 우선합니다. 이 헤더가 테이블의 내용을 기반으로 편집 할 수 있습니다