2015-02-22 1 views
0

В моем приложении у меня есть раскадровка с кучей элементов. Я устанавливаю свойства этих элементов из «ViewController.swift».iOS Swift - метод доступа в Child от родителя

На раскадровке находятся два UIViews, которые были подклассифицированы для использования методов рисования. Они должны использоваться как поля «подпись», где пользователь может подписать свою подпись в поле. Это работает нормально.

Один из подклассовых меток UIViews - это «eraseBitmap», который очищает UIView чертежа.

class SigView: UIView { 
    ... 
    func eraseBitmap() { 
     path = nil 
     cache = nil 
    } 
} 

У меня есть кнопка, которая вызывает функцию «стереть» в родительском VC.

Я попытался сделать

func erase() { 
    SigView.eraseBitmap() 
} 

Однако, который генерирует ошибку, говоря, что я пропускаю аргумент. Однако eraseBitmap не принимает аргументов.

Если я добавляю аргумент, независимо от того, что это такое, я получаю ошибку «SigView not convertible to ...».

Любые идеи или лучший способ кодирования этой части?

+0

Что такое SigView? Имя класса? Имя экземпляра класса? – GoZoner

+0

SigView - это имя класса подклассов UIView. Отредактированный OP, чтобы добавить немного ясности. – matcartmill

ответ

1

Ваш SigView класс определяет метод eraseBitmap() - что-то вроде:

class SigView : UIView { 
    func eraseBitmap() { /* ... */ } 
} 

Вы применить этот метод к экземплярам SigView. Итак, где-то у вас есть экземпляр SigView в вашем пользовательском интерфейсе, например:

var aView : SigView = ... 

Вы затем использовать:

func erase() { 
    aView.eraseBitmap() 
} 

или, возможно,

func erase (view:SigView) { 
    view.eraseBitmap() 
} 

ошибка вы получение вызвано попыткой вызвать метод non-class для класса. Неклассические методы могут быть вызваны только для экземпляров классов.

+1

Спасибо. Я понял, что объявляю свой var в родительском VC следующим образом: UIView вместо: SigView – matcartmill

Смежные вопросы