我有标签栏,在视图"A"和"A"我有导航控制器.所以我的导航控制器里面的"A"我叫了
[self presentModalViewController:modalView animated:YES]
Run Code Online (Sandbox Code Playgroud)
但modalView显示在标签栏下.如何在标签栏上方显示它?
objective-c uitabbarcontroller presentmodalviewcontroller ios
因此,在我的通用应用程序中,我有一个部分,其中一个人可以查看我们系统中的现有笔记列表(通过简单的Web服务检索),然后如果需要也可以创建一个新笔记.所以对于iPhone而言,它的布局非常简单,一个TableViewController用于在NavigationBar上显示带有"添加"按钮的列表,该按钮显示添加新项目的模态视图.虽然在iPad上,相同的布局有很多浪费的空间,所以我选择使用popOver方法在popOver中显示列表,然后让它们从那里添加.我的问题是当用户点击PopOver视图中的Add按钮时,模态视图会全屏显示,而不是仅仅出现在popover视图中.这是我到目前为止的代码:
-(void) AddButtonPressed:(id)sender {
NewNoteVC *newNote = [[[NewNoteVC alloc] initWithNibName:@"NewNoteVC" bundle:nil] autorelease];
newNote.defaultClientID = defaultClientID;
UINavigationController *navCon = [[[UINavigationController alloc] initWithRootViewController:newNote] autorelease];
if ([isPopOver isEqualToString:@"YES"]) {
[navCon setModalInPopover:YES];
[self.navigationController setModalInPopover:YES];
[self.navigationController presentModalViewController:navCon animated:YES];
}
else {
[self.navigationController presentModalViewController:navCon animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
}
"isPopOver"字符串只是从前一个屏幕发送的占位符,它调用了这个TableView(我知道我可以将其切换为布尔值以获得更好的性能,我只是快速地将它们放在一起试试).我知道我搞砸了某个地方,我只是不知道我需要什么设置才能让它正常工作.
我有能力提出这个问题,因为经过大量的研究,几乎2天的谷歌搜索,Stack Overflowing等......
我的问题是:我从我的主ViewController呈现ViewController,如下所示:
UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:VController];
navigation.transitioningDelegate = self;
navigation.modalPresentationStyle = UIModalPresentationCustom;
[self presentViewController:navigation
animated:YES
completion:nil];
Run Code Online (Sandbox Code Playgroud)
无论何时iPhone用户正在通话,或者正在使用他或她的手机作为热点,状态栏都会被放大,将我的模拟显示VC推到底部,但原点设置为(0; 0)问题是用户在完成呼叫期间他在我的应用程序状态栏调整到正常大小,但Modal VC没有向上移动.

感谢此通知,我在代码中发现了解这一点:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statuBarChange:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
最糟糕的是框架是核心,原点仍然是(0,0)
有没有办法反映模态提出的vc?没有解雇并再次提出它?
我有一个关于TWTweetComposerViewController在iOS 5中呈现模态视图的问题.
我使用下面的apple示例代码tweet在我的应用程序中实现一个方法.
-(void)tweet
{
//Using tweeting example code.
//Setup the build-in twitter composer view controller
TWTweetComposeViewController *tweetViewController = [[TWTweetComposeViewController alloc]init];
//Add url
[tweetViewController addURL:[self URL]];
[tweetViewController setInitialText:@""];
//Present Composer
[self presentModalViewController:tweetViewController animated:YES];
//Creat the completion handler
[tweetViewController setCompletionHandler:^(TWTweetComposeViewControllerResult result)
{
//Do something here.
[self dismissModalViewControllerAnimated:YES];
}];
[tweetViewController release];
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,当我调用该tweet方法时,推文控制器确实显示为模态视图.
然而,问题是:作曲家出现的速度非常慢.显示作曲家通常需要3-5秒.当然,这是应用程序第一次调用此方法时.在第一次之后,它显示出更快一点,但仍然需要大约1~2秒.
我想知道是否有一些我没有做的正确使作曲家视图显得缓慢?有没有办法加快这个过程?
顺便说一句.测试设备是iPhone 4.
谢谢!
我最近在我的iOS应用程序中遇到了一个UIViewController令人毛骨悚然的情况,我试图连续关闭从我的窗口的rootViewController中呈现的一个,使用:
[rootViewController dismissViewControllerAnimated:YES completion:NULL]
Run Code Online (Sandbox Code Playgroud)
并在此后不久(另一种方法,偶然)提出另一个,:
UIViewController *vc2 = [[[MyViewController2 alloc] initWithNibName:nil bundle:nil] autorelease];
[rootViewController presentViewController:vc2 animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud)
问题是,我永远无法让第二个视图控制器显示出来.事实证明,就像我所知道的那样,dismissViewControllerAnimated:completion:需要通过"完成"时间的异步块presentViewController:animated:completion:才能再次正常工作.从我所知道的,这个事实并没有直接记录在Apple的文档中.
我提出的解决方案是使用一个方法来解雇解雇,该方法指定您之后要调用的选择器,如下所示:
- (void)dismissViewController:(UIViewController *)presentingController
postAction:(SEL)postDismissalAction
{
[presentingController dismissViewControllerAnimated:YES
completion:^{
[self performSelectorOnMainThread:postDismissalAction
withObject:nil
waitUntilDone:NO];
}];
}
Run Code Online (Sandbox Code Playgroud)
然后我打电话给:
[self dismissViewController:self.window.rootViewController
postAction:@selector(methodForNextModalPresentation)];
Run Code Online (Sandbox Code Playgroud)
无论如何,我想发帖,因为我环顾四周并且没有看到任何有这个特殊问题的人,所以我认为这对人们理解可能是有用的.而且,我想验证我没有破解具有更好的分辨率设计模式的解决方案.
formSheet当用户点击我的通用应用程序的iPad侧导航栏中的"设置"按钮时,我需要提供一个viewController .该视图称为"SettingsViewController",它是我的iPad故事板中的视图控制器,ID为"设置".
我没有使用segue,因为在我的iPad版本的应用程序中,我在左侧的导航栏中有多个按钮,所以我必须按程序添加按钮.(无法将segue连接到故事板中不存在的UIBarButtonItem.)
我想要的功能在那里,演示文稿不是.当我SettingsViewController在iPad上呈现我的时候,它呈现为全屏视图.我需要它作为表单.
我把它包装成一个NavigationController,我需要并且工作正常,只需要它以正确的方式呈现自己.
这是显示视图的代码:
-(void)showSettings:(id)sender {
SettingsViewController *svc = [self.storyboard instantiateViewControllerWithIdentifier:@"settings"];
svc.delegate = self;
svc.modalPresentationStyle = UIModalPresentationFormSheet;
UINavigationController *navcont = [[UINavigationController alloc] initWithRootViewController:svc];
[self presentViewController:navcont animated:YES completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有我能想到的东西.非常感谢任何帮助.
我在ipad上有uiviewcontroller这个配置:
shouldAutorotate (true)
supportedInterfaceOrientations (UIInterfaceOrientationMaskAll)
在里面willRotateToInterfaceOrientation我执行一些技巧来调整我的界面.
从这个控制器的一个孩子,我展示了一个带有这个-poor-代码的QuickLookController.
[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentViewController:previewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
但是,如果我旋转我的ipad方法willRotateToInterfaceOrientation没有被调用,所以我无法做到调整界面的技巧.
有人可以解释我或给我一些建议吗?谢谢
uiviewcontroller ipad screen-rotation presentmodalviewcontroller
我正在使用一个UIScrollView用于分页的三个不同的UIViewControllers.寻呼机初始化为从头开始显示第1页.因此,用户可以从头开始向左或向右滑动.当我从中视图控制器呈现模态视图控制器时UIScrollView,在呈现的视图控制器的动画期间临时滚动到第一页.当我关闭模态视图控制器时,一切都恢复正常,并UIScrollView显示中央视图控制器.
我期望(并希望)UIScrollView在动画期间保持它的位置.
这不是导致崩溃或其他什么的技术错误,它只是丑陋.
以前有过这样的人吗?知道怎么解决吗?
paging cocoa-touch uiscrollview presentmodalviewcontroller scroll-paging
我想要实现的是与 iOS 13 的共享视图完全相同的行为。我想在 iPad 上将我的自定义选择器视图显示为 popover,在 iPhone 上显示为半模态。我目前在情节提要上使用“present as popover”,我获得了在 popover 和 modal 之间免费自动切换的默认行为。我想我需要切换到自定义控制器,但我不知道如何实现这一点。
popover uipopovercontroller presentmodalviewcontroller ios13
我想在启动ipad应用程序时有条件地显示登录屏幕.我不想让它成为默认segue的一部分,因为它们只需要定期登录,而不是每次都登录.
我的问题有很多 例子,但它们似乎都早于ios5.然而,当我使用故事板时,似乎没有任何效果.
为了减少这一点,*创建一个新的单一视图应用程序,使用storyboard*为故事板添加一个新的viewcontroller,给它一个标识符"loginScreen"*在每个视图上放置一个文本标签,以便在视觉上区分它们.*在appDelegate中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIStoryboard *storyboard = [self.window.rootViewController storyboard];
UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"loginScreen"];
[self.window.rootViewController presentModalViewController:loginController animated:TRUE];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
从我看到的例子来看,这应该有效.但它仍然始终显示原始的rootViewController视图.虽然没有错误.
任何人都可以指出我错过的(可能很小的)事情吗?
uiapplicationdelegate presentmodalviewcontroller ios5 uistoryboard
presentmodalviewcontroller ×10
ios ×5
ios5 ×2
ipad ×2
asynchronous ×1
autolayout ×1
cocoa-touch ×1
in-call ×1
ios13 ×1
objective-c ×1
paging ×1
popover ×1
statusbar ×1
storyboard ×1
twitter ×1
uiscrollview ×1
uistoryboard ×1
xcode ×1