2014-07-25 23 views
25

Tôi có một dự án Swift nơi tôi đã thêm mục tiêu khung với một lớp con tùy chỉnh là UIView để tôi có thể sử dụng chế độ xem trực tiếp mới trong Trình tạo giao diện trong Xcode 6. Nhưng khi tôi cố gắng thêm @IBOutlet vào lớp con UIViewController trong dự án của tôi, tôi nhận được một "Sử dụng loại không khai báo 'MyCustomView'" lỗi và tôi không thể tạo dự án của mình.Nhập khung Swift trong Swift: "Sử dụng loại không khai báo 'MyCustomView'"

Dưới đây là mã của tôi từ lớp UIViewController:

import UIKit 
import MyCustomFramework 


class MyViewController: UIViewController { 

    @IBOutlet var myCustomView: MyCustomView? 

} 

Và đây là những gì 'MyCustomView.swift' trong mục tiêu 'MyCustomFramework' trông giống như:

import UIKit 

@IBDesignable class MyCustomView: UIView { 

    @IBOutlet var imageView: UIImageView? 

    init(coder aDecoder: NSCoder!) { 
     super.init(coder: aDecoder) 
    } 
} 

Bất cứ ai biết những gì tôi quên? Tôi đã nhập nó theo cách sai? Tôi đã bỏ lỡ một cái gì đó?

Trả lời

33

Bạn nên đánh dấu các lớp như public vì nó là một phần của mô-đun khuôn khổ khác nhau

@IBDesignable public class MyCustomView: UIView { 

} 

By lớp học và phương pháp mặc định sẽ có mặt tại internal cấp độ truy cập. Nếu bạn muốn sử dụng bên ngoài của mục tiêu đó, bạn nên đánh dấu nó là công khai. Sau đó, nó sẽ là một phần của giao diện công cộng (hiển thị bên ngoài mục tiêu)

+1

Tôi nghĩ bạn nên luôn luôn đọc Ghi chú phát hành đầy đủ cho mọi bản cập nhật beta đơn lẻ từ Apple. Tính năng này đã được thêm vào thông qua cập nhật và tôi không nhận thấy sự thay đổi. Cảm ơn bạn cho các gợi ý anyways! :) – Dschee

+4

Hmm Tôi phải làm điều gì khác sai. – Morkrom

+0

Tôi cũng đang gặp sự cố, nhưng tôi không phải là mã khung của mã của riêng tôi ... – Unome

0

Tôi phải đối mặt với lỗi tương tự sau khi nhập khung tùy chỉnh của tôi A bên trong một dự án B khác, thậm chí tất cả các lớp của tôi đều được công khai.

Tôi đã giải quyết bằng cách thay đổi cài đặt Tòa nhà của khung tùy chỉnh của tôi A tại Kiến trúc xây dựng tích cực chỉ thành Không thay vì Có, sau đó làm sạch biên dịch và tái nhập lại khung công tác sau khi xóa khung cũ.

Sau đó, mọi thứ được biên dịch thành công.

Các vấn đề liên quan