【问题标题】:How can I display a view controller modally, using the parent's navigation controller?如何使用父导航控制器以模态方式显示视图控制器?
【发布时间】:2011-04-15 11:25:14
【问题描述】:

我在没有 UITabBarController 的导航堆栈中间实现了一个 UITabBar。 UITabBar 位于DetailViewController 中,它将屏幕的一部分委托给与所选选项卡元素关联的视图控制器。在通过选项卡栏选择显示的视图控制器之一内,有一个 UIButton 需要以模态方式显示视图。我试过[self presentModalViewController:modalNavController animated:YES];,但是新的导航栏隐藏在父控制器的导航栏下方,DetailViewController。所以我认为我需要做的是使用父导航控制器以模态方式呈现视图,以便新的导航栏位于DetailViewController 导航栏的顶部。

我知道这是可能的,因为我在 DetailViewController 中有一个广告,点击添加可以得到想要的结果,但我无法合并该代码。我也可以从 DetailViewController 而不是 subView 显示 UIButton,但我需要多次使用这种模式,所以我宁愿不必使用这样的非正统黑客。

谢谢!

编辑

我已经尝试将新视图添加到导航控制器,然后像这样呈现导航控制器:

WriteReviewController *newReview = [[WriteReviewController alloc] initWithNibName:@"WriteReviewController" bundle:nil];
UINavigationController *modalNavController = [[UINavigationController alloc] initWithRootViewController:newReview];
// This is intended to be presented in another view controller class
modalNavController.navigationBar.barStyle = UIBarStyleDefault;  
[self.parentViewController presentModalViewController:modalNavController animated:YES]; 
[modalNavController release];

【问题讨论】:

    标签: iphone uiview uinavigationcontroller uitabbar presentmodalviewcontroller


    【解决方案1】:

    是自子类化 UIViewController 还是别的什么?我已经通过这种方式成功地使用导航控制器完成了视图,尽管我通常不使用笔尖进行操作。看看你先推送视图是否成功,然后再尝试presentModalView。

    我还建议使用委托方法来实现这一点。尽管对您所做的事情没有必要,但您会发现以后遇到的问题会更少,并且可能被认为是“正确”的做事方式。

    【讨论】:

    • self 是 UIViewController 的子类。我决定只将 UIButton 从 DetailViewController 添加到子视图,因为我无法弄清楚如何以其他方式做到这一点。你的意思是我应该尝试 [self.parentViewController push...] 吗?显然, parentViewController 返回 nil。您能否将我引向一个资源,在那里我可以了解更多关于实现此功能的“委托方法”?我只想正确地做到这一点,因为我尝试过的所有 BS hack 都没有做任何事情,只会让我头疼。谢谢!
    • 你应该只使用 self,而不是 self.something。要查看委托方法的实现,请查看 iTunesU 提供的斯坦福 iPhone 开发课程(2009 年 5 月 6 日)的第 11 讲。就像我说的你并不真的需要它,但它是“正确”的做法,它会让你更好地理解 SDK,比如 TableViews 等等,一旦你完全理解它,你就可以做得很好有它的东西。
    • 哦,是的,我的意思是尝试 [self.parentViewController push 看看它是否有效。我认为它应该只是 self 因为你正在调用 UIViewController 的预定义方法
    • 我一定会看看那个讲座。我熟悉在表格视图和选项卡栏中使用代表(这不是我的第一个 iphone 应用程序),但我真的看不出他们在这种情况下如何帮助我。我会看视频,希望能学到一两件事;)
    • 使用委托很简单,不过这是在创建委托。
    猜你喜欢
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2011-06-30
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多