TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
iOS Dev

29 Aug 2025, 14:31

Telegram'da ochish Ulashish Shikoyat qilish

Как мигрировать UIKit-интерфейс на scene-based в iOS

Для iOS 18.4 и выше уже сейчас вы можете видеть сообщение в консоли для старых неадаптированных проектов:
This process does not adopt UIScene lifecycle.
This will become an assert in a future version.



А кто ставил бетку Xcode и пробовал собрать для 26 оси, наверняка видели и сообщения пострашнее:
UIScene lifecycle will soon be required.
Failure to adopt will result in an assert in the future.


В следующем за 26 осью мажорном релизе приложение, основанное не на сценах вообще не запустится.

Сейчас я работаю над большим проектом, в котором до сих пор не только многое на Objective-C, но и одна из задач в текущих релизах - заадоптить саппорт для CarPlay, так что здесь без корректного перехода на сцены ничего бы не получилось.

На самом деле всё довольно просто, для этого вам нужно всего лишь:

1. Добавляем саппорт сцен в plist:
UIApplicationSceneManifest

UIApplicationSupportsMultipleScenes

UISceneConfigurations

UIWindowSceneSessionRoleApplication


UISceneConfigurationName
Default Configuration
UISceneDelegateClassName
$(PRODUCT_MODULE_NAME).SceneDelegate
UISceneStoryboardFile
Main





// Скорее всего, в небольших проектах достаточно будет одной сцены, но если у вас mac catalyst, например - то поддержка мультисцен буквально мастхэв для многих кейсов.




2. Кроме этого, нужно задать конфиг для каждой из использующихся в проекте сцен:
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
configurationForConnecting connectingSceneSession: UISceneSession,
options: UIScene.ConnectionOptions
) -> UISceneConfiguration {


// Each UISceneConfiguration have a unique configuration name.
// The configuration name is a app-specific name
// you use to identify the scene, and it corresponds to entries
// in the `Info.plist` scene manifest.
var configurationName: String!

switch options.userActivities.first?.activityType {
case UserActivity.GalleryOpenInspectorActivityType:
// Create a photo inspector window scene.
configurationName = "Inspector Configuration"
default:
// Create a default gallery window scene.
configurationName = "Default Configuration"
}

return UISceneConfiguration(
name: configurationName,
sessionRole: connectingSceneSession.role
)
}
}


3. И запилить метод willConnectTo:
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?

func scene(
_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions
) {
// Confirm the scene is a window scene in iOS or iPadOS.
guard let windowScene = scene as? UIWindowScene else { return }

window = UIWindow(windowScene: windowScene)
window?.rootViewController = YourRootViewController()
window?.makeKeyAndVisible()
}
}


Сама логика останется буквально той же, за небольшой поправкой, что ваш код из applicationDidBecomeActive(_:) надо перенести в sceneDidBecomeActive(_:), и так далее.

Целиком разбор и советы от Apple можно посмотреть здесь (в TN3187).

😃 iOS Dev

3.7k 1 108 6 61
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot