2017-01-24 2 views
1

У меня есть приложение, которое блокирует доступ Пользователя к нескольким строкам контроллера вида. Это делается путем проверки, если для переменной типа bool установлено значение true или false.Включить заблокированные строки после покупки приложения. Проблема с кодированием

var unlocked: bool = false 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell! 

    //blocking cells if they are not paid for. 
    if unlocked == false { 

     if (indexPath.row >= 2) { 
      cell.userInteractionEnabled = false 
      cell.contentView.alpha = 0.5 
     } 
     else{ 
      cell.userInteractionEnabled = true 
      cell.contentView.alpha = 1 
     } 
    } 
    return cell 
} 

Это прекрасно работает. Затем у меня есть возможность для пользователя приобрести доступ к оставшимся строкам и, следовательно, к оставшемуся содержимому приложения. Как только покупка In-app будет куплена, она запустит функцию «updateSections()». Я знаю, что эта функция называется покупкой, поскольку я ее протестировал.

Теперь я хочу разрешить пользователю доступ к остальным строкам в представлении таблицы из функции «updatedSections()», поскольку они будут платить за него.

Что я попытался это:

//function to unlock 
func unlockSections() { 

    //This is the code for what happens once the device has bought the IAP. going to have to save what happens here in using nsuserdefaults to make sure it will work when the app opens and closes. 

    print("The IAP worked") 
    let unlocked = true 
    tableview.reloadData() 
} 

Однако это не похоже на работу. Я не вижу, где я ошибаюсь.

ответ

1

Проблема заключается в том, что эта линия:

let unlocked = true 

является определяющим новую константу под названием unlocked, которая существует только в рамках вашего метода unlockSections. Он совершенно отделен от свойства, называемого unlocked, которое определено в начале вашего класса. Для того, чтобы обновить свойство вместо создания новой постоянной, просто перенесите «пусть»:

unlocked = true 

или если вы хотите быть кристально чистым (или вы хотите иметь и другое, но использовать свойство в конкретном случае) , используйте «я». чтобы подчеркнуть, что вы намереваетесь использовать это имущество:

self.unlocked = true 
+0

Спасибо, человек отлично поработал. – pete800

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