Отображение списка лидеров приводит к сбою приложения, поскольку showViewController не поддерживается

Как правильно представить списки лидеров Game Center в iOS 7? Приведенный ниже код дает сбой на showViewController, потому что он поддерживает только iOS 8. В других сообщениях Stack Overflow предлагается использовать presentViewController для iOS 7, но это показывает только пустую таблицу лидеров.

func showLeaderboards() {
    // User logged into GameCenter?
    if (!GKLocalPlayer.localPlayer().authenticated) {
        println("Local player not authenticated")
        // Show message
        return
    }

    // If here, user authenticated. Present leaderboards.
    var gcViewController = GKGameCenterViewController()
    gcViewController.gameCenterDelegate = self
    gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards
    gcViewController.leaderboardIdentifier = HighScoresLeaderboardKey
    self.showViewController(gcViewController, sender: self)
    self.navigationController?.pushViewController(gcViewController, animated: true)
}

person Crashalot    schedule 03.06.2015    source источник


Ответы (1)


Если ваше приложение предназначено для iOS 7.x, вам следует использовать следующий код:

self.presentViewController(gcViewController, animated: true, completion: nil)

вместо:

self.showViewController(gcViewController, sender: self)
person 酷酷的哀殿    schedule 03.06.2015
comment
Спасибо за помощь, но presentViewController показывает пустую таблицу лидеров (т. е. ни вкладки ни таблицы лидеров, ни вкладки задач). Если мы используем showViewController на устройстве iOS 8, он показывает заполненную таблицу лидеров. Есть ли что-то еще, что нам нужно сделать с presentViewController, чтобы он что-то показывал? - person Crashalot; 03.06.2015
comment
я новичок в GameKit, мне жаль, что я не могу помочь вам решить, вы показываете пустую таблицу лидеров - person 酷酷的哀殿; 03.06.2015
comment
Спасибо, но знаете ли вы, почему результат отличается, когда мы используем presentViewController вместо showViewController для устройства iOS 8? - person Crashalot; 03.06.2015
comment
На самом деле, кажется, теперь работает, спасибо! Понятия не имею, почему это не сработало сначала. - person Crashalot; 03.06.2015