programing

반복 컨텐츠 iOS에 콘센트를 연결할 수 없습니다.

lastmoon 2023. 6. 21. 22:57
반응형

반복 컨텐츠 iOS에 콘센트를 연결할 수 없습니다.

저는 방금 앱을 만들었고 @IBOut's를 스토리보드에 연결하기 시작했습니다.저는 그것들 중 일부를 기본 스타일의 UITableViewCell 프로토타입 셀의 레이블에 연결하고 있습니다.Storyboard에서 다음 오류가 발생하더라도 연결하면 다음과 같습니다.

TableViewController에서 UI 레이블로의 detailTextOutlet이 잘못되었습니다.반복 콘텐츠에 아울렛을 연결할 수 없습니다.

누가 나 좀 도와줄 수 있어요?제가 항상 성공적으로 설정해왔지만 이번에는 이 오류가 발생했습니다.

테이블 뷰 셀 하위 클래스를 만들고 프로토타입의 클래스로 설정합니다.해당 클래스에 콘센트를 추가하고 연결합니다.이제 셀을 구성할 때 콘센트에 액세스할 수 있습니다.

스토리보드를 통해 제공되는 테이블 뷰 셀에는 동적 프로토타입정적 셀의 두 가지 유형이 있습니다.

enter image description here

동적 프로토타입

이름에서 이 유형의 셀이 동적으로 생성됩니다.스토리보드가 아닌 코드를 통해 제어됩니다.테이블 뷰의 대리인 및 데이터 소스를 사용하여 셀 수, 셀 높이, 셀 프로토타입을 프로그래밍 방식으로 지정할 수 있습니다.

셀을 테이블 보기로 끌면 셀의 프로토타입이 선언됩니다.이하여 테이블 할 수 .cellForRow방법, 프로그래밍 방식.모든 뷰를 직접 추가하여 각 셀과 모든 셀을 만드는 대신 하나의 프로토타입만 정의하면 된다는 장점이 있습니다(정적 셀 참조).

따라서 이 경우 셀 프로토타입의 UI 요소를 뷰 컨트롤러에 연결할 수 없습니다.하나의 뷰 컨트롤러 개체만 시작되지만 많은 셀 개체가 시작되어 테이블 뷰에 추가될 수 있습니다.하나의 뷰 컨트롤러 연결로 여러 셀을 제어할 수 없기 때문에 셀 프로토타입을 뷰 컨트롤러에 연결하는 것은 의미가 없습니다.그리고 그렇게 하면 오류가 발생합니다.

enter image description here

문제를 을 이문를해프입레이을블에 해야 합니다.UITableViewCell물건.aUITableViewCell또한 셀의 프로토타입이며 원하는 만큼 셀 개체를 시작할 수 있으며 각 개체는 스토리보드 테이블 셀 프로토타입에서 생성된 뷰에 연결됩니다.

enter image description here

당신의 에서, 당신지.cellForRow 셀을 합니다.UITableViewCell수업, 그리고 레이블과 함께 재미있는 것들을 합니다.

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "yourCellIdentifier") as! YourCell

    cell.label.text = "it works!"

    return cell
}

정적 셀

반면에 정적 셀은 실제로 스토리보드를 통해 구성됩니다.UI 요소를 생성하려면 각 셀에 UI 요소를 끌어다 놓아야 합니다.스토리보드에서 셀 번호, 높이 등을 제어합니다.이 경우 스토리보드에서 작성한 것과 비교하여 전화기에서 작성한 것과 정확히 동일한 표 보기를 볼 수 있습니다.정적 셀은 페이지 설정에 더 자주 사용되며, 셀은 많이 변경되지 않습니다.

정적 셀의 UI 요소를 제어하려면 뷰 컨트롤러에 직접 연결하고 설정해야 합니다.

enter image description here

테이블 보기를 사용하여 설정 및 기타 옵션(기본 제공 설정 앱과 같은)을 표시하는 경우 속성 관리자에서 테이블 보기 내용을 정적 셀로 설정할 수 있습니다.또한 이렇게 하려면 테이블 보기를 UITableViewController 인스턴스에 포함해야 합니다.

또는 보기에서 개체를 참조하기 위해 IBOutlet을 사용할 필요가 없습니다.ViewCell 테이블의 Label에 Tag 값을 지정할 수 있습니다. 예를 들어 Tag를 123으로 설정합니다(Attributes Inspector가 이 작업을 수행할 수 있음).그런 다음 다음 레이블에 액세스할 수 있습니다.

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "someID", for: indexPath)

    let label = cell.viewWithTag(123) as! UILabel //refer the label by Tag

    switch indexPath.row {
    case 0:
        label.text = "Hello World!"
    default:
        label.text = "Default"
    }
    return cell 
}

나는 나와 함께.UIViewcontroller커스텀 셀이 있는 테이블 뷰가 있습니다.을 UILabel의 아웃에매핑에 .UItableviewcell에▁UIViewController오류가 발생했습니다.

대부분의 사람들이 지적했듯이 하위 분류는 UITableViewCell이 문제를 해결합니다.그러나 프로토타입 셀(UITableViewCell)은 Apple에서 정의한 것이며 사용자 자신의 콘센트를 추가할 수 없기 때문에 이는 허용되지 않습니다.

때때로 Xcode가 셀 콘센트 연결을 올바르게 제어하지 못했습니다.

어떻게든 현재 셀의 레이블/버튼이 다른 셀에 연결되어 있으면 해당 셀을 제거하면 오류가 사라집니다.

컬렉션 뷰의 경우:

솔루션:

뷰 컨트롤러에서 컬렉션 뷰 셀의 IB 아웃렛을 제거하십시오.

이 문제는 당신의 IBOutlet의 무효를 언급합니다.따라서 다중 스레드(하이브리드)가 있는 모든 하위 클래스를 제거하고 다시 연결합니다.

답은 이미 수집 보기 셀에 대한 다른 질문에 언급되어 있습니다.

시뮬레이터를 클릭하고 창으로 이동하여 장치 베젤을 활성화합니다.

언급URL : https://stackoverflow.com/questions/26561461/outlets-cannot-be-connected-to-repeating-content-ios

반응형