2015-01-08 4 views
0

Я подклассов в UIScrollView и в методе layoutSubviews я следующееНевозможно присвоить результат этого выражения

let v = self.delegate?.viewForZoomingInScrollView!(self) 
let f = v?.frame 

if f != nil { 
f!.origin.x = 100 
} 

Я получаю сообщение об ошибке:

Cannot assign to the result of this expression 

на линии

f!.origin.x = 100 

Где я буду неправильно

ответ

3

в вашем коде f объявлен как неизменяемая переменная. Неизменяемые переменные не могут быть изменены после первоначального присваивания при объявлении.

let variable_name = 10 
variable_name = 11 // Cannot assign to let value 'v' 

let ключевое слово используется для объявления неизменные переменных.
Ключевое слово var используется для объявления изменяемых переменных.

var variable_name = 10 
variable_name = 14 // Can be changed 

Так что измените свой код на var f = v?.frame.

Также, если вы пытаетесь изменить фрейм представления, он будет работать только в том случае, если вы непосредственно назначаете view?.frame.origin.x = 100, так как приведенный выше код создаст копию кадра только в f.

1

Потому что f объявлен как let и неизменным.

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