我在主ViewController中覆盖-orientationChanged,以便在设备处于横向模式时推送ModalViewController A. 当以纵向模式放回时,ModalViewController A被解除.但是,还有其他情况(按钮触摸后),其中显示了ModalViewControllers B,C或D. 当这些显示时,如果设备被转向横向并向后转,ModalViewController BC或D被不适当地解雇.
即使显示了ModalViewController,我也可以验证我的主ViewController上的-orientationChanged是否正在被消息.在显示ModalViewController BC或D时,是否存在我可以添加到-orientationChanged方法以绕过该代码的条件?
谢谢!
在我的子类中,NSObject我想称之为
[[self navController] presentModalViewController:myView animated:YES];
Run Code Online (Sandbox Code Playgroud)
但我的尝试都没有成功.如果我不在子类中,如何调用模态视图UIViewController?
解:
#import "myProjectNameAppDelegate.h"
// ...
MyViewController *myView = [[MyViewController alloc] init];
myProjectNameAppDelegate *appDelegate = (myProjectNameAppDelegate *)[[UIApplication sharedApplication] delegate];
[[appDelegate navController] presentModalViewController:myView animated:YES];
Run Code Online (Sandbox Code Playgroud) 我试图在一个模态呈现的UINavigationController的底部放一个简单的UIToolbar.在此示例中,它应包含两个按钮"取消"和"某事".
...
UINavigationController modalNavigationController = new UINavigationController(someViewController);
modalNavigationController.NavigationBar.BarStyle = UIBarStyle.Black;
modalNavigationController.Toolbar.BarStyle = UIBarStyle.Black;
modalNavigationController.ToolbarHidden = false;
UIBarButtonItem cancelButton = new UIBarButtonItem("cancel", UIBarButtonItemStyle.Plain, delegate {
modalNavigationController.DismissModalViewControllerAnimated(true);
});
UIBarButtonItem flexSpace = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace, null);
UIBarButtonItem someButton = new UIBarButtonItem("something", UIBarButtonItemStyle.Plain, delegate {
Console.WriteLine("here we are!");
});
modalNavigationController.ToolbarItems = new UIBarButtonItem[] { cancelButton, flexSpace, someButton };
parentController.PresentModalViewController(modalNavigationController, true);
...
Run Code Online (Sandbox Code Playgroud)
工具栏显示并具有黑色样式(已分配),但它不包含任何项目.我已经尝试在将hidden设置为false之前分配项目,没有效果.我也试过使用Toolbar.Items和Toolbar.Hidden以及SetToolbarItems()和SetToolbarHidden()代替,没有运气.
关于这里可能出错的任何提示?谢谢
编辑:
网上的大多数样本创建自己的UIToolbar并将其添加为子视图.UINavigationController不需要这样,对吧?AFAICT,它有一个内置的.
uitoolbar uinavigationcontroller xamarin.ios modalviewcontroller
我有一个典型的UITableViewController视图集.在所有视图上都有一个按钮,可以显示模型视图.在该设置视图上是一个按钮.我希望该按钮解除模态视图并在UITableViewController的navigationController上实现popToRootViewController.
解雇模态视图很容易:
[self dismissModalViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)
这很好.我试过这个来弹出主UITableViewController:
[self.parentViewController.navigationController popToRootViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)
没有任何反应.
我可以实现一个委托来实现这一点但是有很多视图控制器具有相同的设置按钮(还有更多),所以首选找到不需要每个视图控制器中的附加代码的解决方案.
非常感谢!
我有一个UIViewController,当按下一个按钮时,我想要一个半屏视图,用UIPicker向上滑动.
我在IB中使用UIPicker创建了一个UIView,还有一个带有完成/取消按钮的UIToolBar.
我怎样才能使这个半视图向上滑动,背景视图仍然显示但是暗淡或无法播放.
到目前为止我正在使用此代码:
- (void)showModalView
{
[self.popupView setFrame:CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:self.popupView];
[UIView animateWithDuration:.2 animations:^{
[self.popupView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
}];
}
Run Code Online (Sandbox Code Playgroud)
这是一张照片:http://www.box.net/shared/static/08ji4s0f6i1b8qubrtz6.png
iphone xcode objective-c uiviewcontroller modalviewcontroller
我正在尝试在两个不同的活动模态视图控制器之间切换并尝试平滑动画.理想情况下,我希望动画看起来就像新的Modal View正在成为当前模态视图的模态视图.
为了在我的应用程序中保持一致性,我需要限制在任何给定时间显示的一层模态视图控制器.
目前我只是现有的模态视图解除没有动画,然后通过RootController动画下一个模态视图,但这看起来不太好.
谢谢
iphone objective-c modalviewcontroller presentmodalviewcontroller
我在顶部[在Apple的状态栏下面]有一个自定义状态栏的布局,然后UIScrollview在中间部分从左到右分页,然后我UIView在底部有一些自定义按钮.所以这是一个简单的三层布局,效果很好.但是,下方视图中的三个自定义按钮会显示一个ModalViewController,当它被取消时,它会将中间调整为UIScrollView全屏,并将其显示在前面,覆盖我拥有的其他两个视图.
还有其他几个人已经注意到这种行为,但似乎他们给出的唯一答案是重新调整UIScrollView回原始坐标的大小.当然,这会起作用,但对我来说似乎是一个黑客攻击,我想知道幕后真的发生了什么,以及如何正确地纠正这个问题.
其他具有相同明显问题的SO链接:
还有一些人已经注意到这种行为只影响3.0及以上,所以我不确定这是否是一个"功能",我只是不明白行为本应该做什么,或者是什么.如果有人能对此有所了解,我将不胜感激.
我一直在关注这个问题的解决方案,以显示透明背景的视图.我遇到的问题是,一旦显示模态视图控制器,底层视图就不再旋转了.
例如,如果A是我的视图控制器,则B是我的模态视图.问题如下.我目前的设备是纵向A显示的.然后我以B模态呈现.然后我旋转我的设备,B随之旋转,但A保持原样.
请有人建议如何处理这种旋转,以便底层视图(A)也被旋转?
在基于标签的应用程序中,单击其中一个标签后,我想显示一个包含一些信息的模态视图控制器。在我的应用程序委托的didSelectViewController方法中,我要添加模式视图。但是它占据了整个屏幕,并隐藏了标签栏。我不想隐藏选项卡栏,只想显示弹出的模态视图,可以将其关闭。
我该怎么做?
请帮忙。
提前致谢。
iphone objective-c uitabbarcontroller modalviewcontroller ios
我有一个奇怪的问题,我只是做一个简单的呈现模态视图控制器.MFMailComposeViewController确切地说.但是,它出现在呈现控制器后面,因此您无法发送任何电子邮件或类型.您可以UINavigationBar在邮件编辑器上看到"取消"按钮,但会弹出UIAlertController显示控制器的后面.这是怎么发生的?这是iOS 11问题吗?对于UIAlertControllers 我也有类似的行为.
此外,如果我按下发送并按下我的按钮以弹出另一个Composer,它将正常工作.这只是第一个.
请参阅我从Xcode获得的附图.
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
mailer.modalPresentationStyle = UIModalPresentationFormSheet;
[mailer setSubject:@"subject Feedback"];
[mailer setToRecipients:@[@"email address"]];
[mailer setMessageBody:@"" isHTML:NO];
[self presentViewController:mailer animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
编辑:添加控制器以获取更多信息.
#import "AboutViewController.h"
#import <MessageUI/MessageUI.h>
@interface AboutViewController () <MFMailComposeViewControllerDelegate>
@property (nonatomic, strong) IBOutlet UIView *contentView;
@end
@implementation AboutViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"About this app";
_contentView.layer.cornerRadius = 10.;
_contentView.layer.shadowColor = [UIColor blackColor].CGColor;
_contentView.layer.shadowRadius = 3.;
_contentView.layer.shadowOpacity = 0.4;
_contentView.layer.shadowOffset …Run Code Online (Sandbox Code Playgroud) iphone ×6
ios ×5
objective-c ×5
cocoa-touch ×1
ios11 ×1
ipad ×1
mfmailcomposeviewcontroller ×1
uiscrollview ×1
uitoolbar ×1
xamarin.ios ×1
xcode ×1