Hinzufügen auf Leos Antwort, ja, es ist ein Privateigentum auf UIAlertController
contentViewController
, die Sie eine UIViewController
festlegen kann (und es ist Sicht) als Inhalt der UIAlertController
.
Sie können eine private Schnittstelle erstellen, um diese Eigenschaft zuzugreifen, ohne KVO zu verwenden oder einen eigenen Header importieren wie folgt:
@interface UIAlertController (ContentViewController)
@property (nonatomic, strong) UIViewController * contentViewController;
@end
Dann Layout Ihrer benutzerdefinierten Ansicht in Ihrem Inhalt des View-Controller view
über Interface Builder oder programmatisch .
Denken Sie daran, dass Sie auch preferredContentSize
Ihre Ansicht Controllers außer Kraft setzen müssen:
- (CGSize)preferredContentSize {
CGSize contentSize = [super preferredContentSize]; //gets the preferredContentHeight from the view, will be set depending on how much content we have
return CGSizeMake(contentSize.width, self.view.preferredContentHeight);
}
Hinweis: anstatt das Überschreiben der Getter, Leo Natan die preferredContentSize
direkt schlägt Einstellung, da es eine Eigenschaft auf UIViewController
ist.
Sie können auch die view
Ihres Ansichtscontrollers in Ihrer Unterklasse ebenfalls überschreiben, wenn Sie möchten.
Ihre Warnung vor als normalerweise einrichten würde:
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"Message"
preferredStyle:UIAlertControllerStyleActionSheet];
Stellen Sie Ihre benutzerdefinierte Ansicht:
[alertController setContentViewController:[[MyContentViewController alloc] init]];
Fügen Sie Ihre Aktionen:
[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^{
NSLog(@"Cancel Button was pressed");
}];
Präsens als gewohnt:
[self presentViewController:alertController animated:YES completion:nil];
Weitere Informationen zu den privaten APIs von UIAlertController
finden Sie auf dem iPhone Dev Wiki article on UIAlertController.
Ich würde auch die privaten Schnittstellen auf _UIAlertControllerActionView
und UIAlertAction
, sowie das UIAlertActionViewRepresentation_Internal
Protokoll überprüfen.
ist sowieso vorhanden, um uitableview von uialertviewcontroller zu pop. – SMS
Sie wollen diese Funktionalität nur durch UITableView erreichen .. – Ricky
Siehe meine Antwort. Ich habe das mehrfach implementiert und es ist sehr einfach. –