Ah adamım, bu bana birkaç gün boyunca başım ağrıyor ve bunu nasıl yapacağımı anlayamıyordum. En kötü yanı, ana ayrıntı şablonuyla yeni bir Xcode iOS projesi oluşturmanın gayet iyi çalışmasıydı. Neyse ki, sonunda, çözümü bulabildim.
Çözümün yeni primaryViewControllerForCollapsingSplitViewController:
yöntemi uygulamak olduğunu önerdiğim bazı yayınlar var UISplitViewControllerDelegate
. Bunu boşuna denedim. Apple'ın işe yarar görünen ana detay şablonunda yaptığı şey, yeni (tüm bunları söylemek için derin bir nefes alın) splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:
delege yöntemini (tekrar açık UISplitViewControllerDelegate
) uygulamaktır. Dokümanlara göre , bu yöntem:
Temsilciden birincil görünüm denetleyicisini ayarlamasını ve ikincil görünüm denetleyicisini daraltılmış arabirime dahil etmesini ister.
Daha ayrıntılı bilgi için bu yöntemin tartışma bölümünü okuduğunuzdan emin olun.
Apple'ın bunu işleme şekli:
- (BOOL)splitViewController:(UISplitViewController *)splitViewController
collapseSecondaryViewController:(UIViewController *)secondaryViewController
ontoPrimaryViewController:(UIViewController *)primaryViewController {
if ([secondaryViewController isKindOfClass:[UINavigationController class]]
&& [[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[DetailViewController class]]
&& ([(DetailViewController *)[(UINavigationController *)secondaryViewController topViewController] detailItem] == nil)) {
// Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.
return YES;
} else {
return NO;
}
}
Bu uygulama temel olarak aşağıdakileri yapar:
- Eğer
secondaryViewController
beklediğimiz buysa (a UINavigationController
) ve beklediğimizi gösteriyorsa (a DetailViewController
- görünüm denetleyiciniz), ancak hiçbir modeli ( detailItem
) yoksa o zaman " Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.
"
- Aksi takdirde, "
NO
bölünmüş görünüm denetleyicisinin ikincil görünüm denetleyicisinin içeriğini daraltılmış arabirime dahil etmesine izin vermek için geri dön "
Sonuçlar dikey olarak iPhone için aşağıdaki gibidir (dikey olarak başlayarak veya dikey olarak döndürerek - veya daha doğru bir şekilde kompakt boyut sınıfında):
- Görüşünüz doğruysa
- ve bir modeli var, detay görünümü denetleyicisini göster
- ancak modeli yok, ana görünüm denetleyicisini göster
- Görüşünüz doğru değilse
- ana görünüm denetleyicisini göster
Çamur kadar temiz.
UISplitViewController
ve her zamanYES
bu yöntemden dönün , sonra her zaman iPhone'da ustayı dikey olarak göstermek istediğim için Storyboard'daki bölünmüş görünüm sınıfını değiştirdim. :)