当我尝试提供警报视图控制器时,我的应用程序崩溃了。
-(void)setupAlertCtrl{
self.alertCtrl=[UIAlertController alertControllerWithTitle:@"Select Image"
message:nil
preferredStyle:UIAlertControllerStyleActionSheet];
}
- (IBAction)selectImagePressed {
**[self presentViewController:self.alertCtrl
animated:YES
completion:nil];//this funcanility is breaking**
}
例外:
libc ++ abi.dylib:以NSException类型的未捕获异常终止
答案 0 :(得分:1)
libc ++ abi.dylib:以NSException类型的未捕获异常终止
如果您已将按钮连接到不再存在(或已重命名)的IBAction,也可能发生这种情况“
如果您遇到此问题而不是转到故事板,请右键单击电话号码顶部的黄色方框图标(查看控制器),然后用黄色标记删除插座。
在这样的情况下会发生什么事情,你可能会命名一个动作,然后重命名它。
希望这会对你有所帮助。
答案 1 :(得分:1)
此代码肯定会对您有所帮助。 我怀疑你正在使用iPad(iPad中的正常操作表崩溃) - (void)setupAlertCtrl {
if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad)
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:@"Your message" preferredStyle:UIAlertControllerStyleActionSheet];
// Remove arrow from action sheet.
[alertController.popoverPresentationController setPermittedArrowDirections:0];
//For set action sheet to middle of view.
CGRect rect = self.view.frame;
rect.origin.x = self.view.frame.size.width / 20;
rect.origin.y = self.view.frame.size.height / 20;
alertController.popoverPresentationController.sourceView = self.view;
alertController.popoverPresentationController.sourceRect = rect;
[self presentViewController:alertController animated:YES completion:nil]; }
else
{
UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:@"Your message" preferredStyle:UIAlertControllerStyleActionSheet];
[self presentViewController:alert animated:YES completion:nil];
}
}
答案 2 :(得分:0)
你必须在视图中调用以下函数加载
-(void)setupAlertCtrl
然后您可以点击按钮
打开警报答案 3 :(得分:0)
你应该像它一样写,
-(void)setupAlertCtrl
{
self.alertCtrl=[UIAlertController alertControllerWithTitle:@"Select Image"
message:nil
preferredStyle:UIAlertControllerStyleActionSheet];
[self presentViewController:self.alertCtrl animated:YES completion:nil];
}
-(IBAction)selectImagePressed
{
[self setupAlertCtrl];
}
希望这会对你有所帮助。
答案 4 :(得分:0)
@media screen and (min-width: 768px) {
#mainNavbar > li {
margin-left: 20px;
border-radius: 4px;
}
}
是UIAlertController
和UIAlertView
功能相同的基于数据块的替代品。通过在创建控制器时设置首选样式来完成警报或操作表之间的切换。
UIActionSheet
我希望这会对你有帮助......
答案 5 :(得分:0)
它不会崩溃,
只需在SetupAlertCntrl
方法中调用viewDidLoad
即可。
工作正常
答案 6 :(得分:0)
你需要先检查你的alertController是否存在,如果不是先创建它。还有一件事,UIAlertControl只能从UIViewController中呈现,所以请确保selectImagePressed函数中的self是UIViewController的一种。
- (IBAction)selectImagePressed {
if(self.alertController == nil) {
[self setupAlertCtrl];
}
[self presentViewController:self.alertCtrl
animated:YES
completion:nil];//this funcanility is breaking**
}
答案 7 :(得分:0)
尝试以下代码:
-(void)setupAlertCtrl
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Choose Profile Image " message:@" " preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction* cameraAction = [UIAlertAction actionWithTitle:@"Take Photo" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"Camera Action");
}];
[alertController addAction:cameraAction];
UIAlertAction* gallaryAction = [UIAlertAction actionWithTitle:@"Gallary" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"Gallary Action");
}];
[alertController addAction:gallaryAction];
UIAlertAction* Cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil];
[alertController addAction:Cancel];
[self presentViewController:alertController animated:YES completion:nil];
}
//按钮点击操作
- (IBAction)selectImagePressed:(id)sender
{
[self setupAlertCtrl];
}
希望这会对你有所帮助。