Bazı çalışmalardan sonra, düzgün bir şekilde görünen özel bir görünümün görüntülendiği bir popover görünümüm var. Popover görünümünün dışına dokunduğunuzda, beklendiği gibi reddeder, ancak içinde bir düğme tıklandığında işten atılmasını isterim, bununla ilgili bana yardımcı olabilecek kimse var mı? Özlü bir rehber bulmak için uğraşmak.Uygun şekilde kapatmak için popover görünümleri nasıl ayarlanır
6
A
cevap
12
Popover'i el ile kapatmak için, bir referansı saklamanız gerekir. Popover'i gösteren kontrolörde iyi bir yer olurdu.
İçerik görünümü denetleyicisinin içindeki düğmeyi, popover'ı kapatmak için orijinal görünüm denetleyicisine (popover'i gösteren) bildirmek için, olası iki yol delege + protokolü veya NSNotificationCenter'dır.
Aşağıdaki örnek kod, NSNotificationCenter kullanır. popover ("PresenterViewController") sunulur görünümü denetleyicisi .h
, popoverViewController için bir özellik ekleyin:@interface PresenterViewController : UIViewController {
...
UIPopoverController *popoverController;
}
...
@property (nonatomic, retain) UIPopoverController *popoverController;
@end
PresenterViewController arasında .m olarak:
@synthesize popoverController;
...
- (void)showPopover
{
if (self.popoverController == nil)
{
ContentFooViewController *content =
[[ContentFooViewController alloc] init];
UIPopoverController *popover = [[UIPopoverController alloc]
initWithContentViewController:content];
[content release];
self.popoverController = popover;
[popover release];
// Listen for the "done" notification which will be posted
// by the button in the content view controller.
// When the notification is received,
// call the contentFooViewControllerDone: method...
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(contentFooViewControllerDone:)
name:@"contentFooViewControllerDone"
object:popoverController.contentViewController];
}
[self.popoverController presentPopoverFromRect:...
// OR
[self.popoverController presentPopoverFromBarButtonItem:...
}
- (void)contentFooViewControllerDone:(NSNotification *)notification
{
// Button in content view controller was tapped, dismiss popover...
[self.popoverController dismissPopoverAnimated:YES];
}
- (void)dealloc
{
//stop listening for notifications and release popoverController...
[[NSNotificationCenter defaultCenter] removeObserver:self];
[popoverController release];
[super dealloc];
}
İçerik görünümü denetleyicisinde, düğme vurma yöntemini aşağıdaki gibi uygulayın:
- (IBAction)dismissButtonTapped
{
[[NSNotificationCenter defaultCenter]
postNotificationName:@"contentFooViewControllerDone" object:self];
}
İlgili konular
- 1. Bir ExtJS sekmesini kapatmak için uygun teknik
- 2. Popover düzensiz şekilde yeniden boyutlandırılıyor
- 3. NSPopover'ı kapatmak için nasıl hareket edilir?
- 4. uygun şekilde
- 5. Uygun şekilde nasıl kullanılır cin.peek()
- 6. Bir Soket bağlantısını kapatmak ve temizlemek için uygun yol nedir?
- 7. İlgili modellerin uygun şekilde döndürülmesi için uygun yol
- 8. Uygun bir şekilde pencereler için sqlite oluşturma
- 9. Uygun şekilde çalışmıyor preg_replace
- 10. uygun şekilde montajları
- 11. uygun şekilde maksimum verim
- 12. Özel bileşenimi uygun şekilde nasıl özelleştirebilirim?
- 13. Kavanozda kaynakları uygun şekilde nasıl paketlenir
- 14. Android Studio'da ActionBarSherlock için uygun şekilde nasıl kurulabilir?
- 15. Çatışmaların çözümü için KDiff3 TortoiseSVN ile nasıl uygun şekilde kullanılabilir?
- 16. Bir etkinlik için uygun şekilde nasıl casusluk yapılır
- 17. hizalayın popover
- 18. JVM TimeZone düzgün bir şekilde nasıl ayarlanır
- 19. Çekirdekdeki iş parçacıklarının uygun şekilde işlenmesi?
- 20. Bir popover nasıl hata ayıklanır?
- 21. WebInvoke akışını kapatmak için gerekli
- 22. Olayı kapatmak için hızlıca kaydırın
- 23. Uygun bir şekilde Instagram tarihini görüntüleme
- 24. mod_geoIP kurulum yardımı? talimatlara uygun şekilde
- 25. JSON Uzun sayıları uygun şekilde dönüştürmüyor
- 26. iOS - UITableView yenileme tablosu uygun şekilde mi?
- 27. manifestPlaceholder için varsayılan değer nasıl ayarlanır?
- 28. Jilet Görünümleri için varsayılan AjaxOptions nasıl oluşturulur?
- 29. İletişim formu ajax'ı uygun bir şekilde kullanmıyor
- 30. SQL Komutu uygun şekilde sonlandırılmadı mı?
One Bu yaklaşıma yönelik uyarı, dışa dokunarak popover'ı kapatırsanız, yine de bir referansınız olduğu için asla düzgün bir şekilde reddedilmez. Ekstra bir denetleyici kontrol etmeyi düşünmüyorsanız, bu iyi bir şeydir, ancak tipik olarak bellek bir prim düzeyindedir ve bunu yapmak istemezsiniz. Yani, '- (void) popoverControllerDidDismissPopover: (UIPopoverController *) popoverController' özelliğini de kullanmalısınız. – memmons
@Hark: İyi nokta, teşekkürler. – Anna
Bu harika - diğerleri için de Apple'ın bir düğmeyi sadece bir popover'ı kapatmak için kullanmasını engellediğini unutmayın. Uygulamanızın bu düğme ile başka bir şey yapması muhtemeldir, bu da gayet iyi. :) – ekinnear