何时在模态视图控制器上设置父/呈现视图控制器?

2024-04-23

我正在展示一个模态视图控制器。在该模态视图控制器中viewDidLoad,我似乎找不到任何对父级 VC 的引用......parentViewController, presentingViewController等等。如果尚未设置,我该如何获得对它的引用?


对于一般解决方案,您可以在第二个控制器中拥有自己的属性,它是weak指向第一个视图控制器的指针。第一个控制器应该在第一个 segue 中设置第二个控制器的属性prepareForSegue.

在回答你的问题时,parentViewController仅在使用视图控制器包含(您没有这样做)时设置。这presentingViewController当你这样做时就设置了presentViewController,但行为会根据第一个视图控制器是否嵌入导航控制器而改变(如果嵌入,则第二个视图控制器的presentingViewController是导航控制器,如果不是,它就是您期望的视图控制器)。看来presentingViewController如果你这样做的话根本就没有设置pushViewController.

最重要的是,我发现如果您在运行期间设置第二个控制器的自定义属性,它会更加可靠和一致。prepareForSegue在第一个控制器中。


所以,在SecondViewController,我有一个.h@interface看起来像:

@class FirstViewController;

@interface SecondViewController : UIViewController

@property (nonatomic, weak) FirstViewController *firstViewController;

@end

然后在第一个视图控制器中,我有一个prepareForSegue看起来像:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"IdentifierForSegueToSecondControllerHere"])
    {
        SecondViewController *controller = segue.destinationViewController;
        controller.firstViewController = self;
    }
}

显然,如果您使用故事板,则上述观点适用。如果您使用 NIB,您将执行以下操作:

SecondViewController *controller = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
controller.firstViewController = self;
[self presentViewController:controller animated:YES completion:nil];

无论如何,一旦你设置好了firstViewController您的财产SecondViewController, that SecondViewController现在可以访问属性或调用公共方法FirstViewController, 例如:

// up at the top, where you have your import statements, include the following

#import "FirstViewController.h"

// then, in the @implementation of the SecondViewController, you can reference
// the first view controller and its properties, such as:

self.firstViewController.someStringProperty = @"some value";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时在模态视图控制器上设置父/呈现视图控制器? 的相关文章

  • 使用cordova打开本地pdf文件

    我使用 cordova 3 3 0 我想打开本地 pdf 文件 然后根据用户需求关闭它 ref window open encodeURI path blank location yes ref addEventListener exit
  • OCMock - 尽管是预期的,但仍调用了意外的方法

    这是经过测试的代码 if MFMailComposeViewController canSendMail MFMailComposeViewController mailComposeController MFMailComposeView
  • 在 Django 中为多个查询编写视图的最佳方法?

    这是一个简单的问题 我已经组织了我的模型 以便提供给页面的大多数对象都属于一种类型 项目 该模型包含各种属性 可以帮助我以不同的方式提供服务 我有文章和视频 它们由模型上的 类型 字段确定 类型 文章 等 我有一个列表视图 它显示项目模型中
  • CodeIgniter:将参数从视图传递到控制器?

    编辑 现在使用下面的代码 我不确定如何正确打印书签和标签 我对 CI 完全陌生 最近遇到了障碍 我非常不确定如何将函数参数从视图文件传递到控制器 以便我可以在函数上使用它 我在视图上有一个 foreach 循环 遍历函数 get lates
  • 如何在 iPhone 中使用可达性代码查找服务器是否可达?

    我有客户端服务器说 http abc com 我想检查该服务器是否响应 如何使用苹果的可达性代码检查这一点 当我看到该代码但无法找到在哪里编写我的客户的网址来检查这一点 请建议我 这是一个同步示例 您可能希望异步执行此操作 但这将帮助您完成
  • 在 Objective-C 中做事的正确位置

    我开始尝试使用 ObjectiveFlickr 框架 目标是创建一个相对简单的 iPhone 地图应用程序 显示当前 MKMapView 区域内带地理标记的 flickr 内容 我遇到了与线程相关的问题before https stacko
  • UIModalPresentationFormSheet 的圆角

    如果这是一个明显的问题 请原谅我 我是个相对较新的人 我有一个模态视图 我设置了自定义尺寸和圆角 void viewWillLayoutSubviews super viewWillLayoutSubviews self view supe
  • XCode 4.2 编译器错误

    当我使用 XCode 4 2 创建新项目 例如 单视图 iOS 应用程序 时 支持文件 文件夹中的 main m 文件如下所示 import
  • 如何在 iOS8 上以编程方式创建一个没有 Storyboard 的 Today 小部件?

    我尝试删除故事板文件和相关的Info plist进入但这次扩展停止工作 它甚至不能从 XCode 启动 The operation couldn t be completed LaunchServicesError error 0 在常规应
  • 使用 strftime 将 NSDate 转换为 String

    如何将 NSDate 转换为使用 strftime 说明符格式化的 NSString 你可以使用 strftime NSDate date NSDate date time t time date timeIntervalSince1970
  • NSDateComponents 中的 sethours

    我正在尝试在 NSDateComponents 中设置小时 我编写了以下代码 NSCalendar calendar NSCalendar alloc initWithCalendarIdentifier NSGregorianCalend
  • 用强/弱自我打破保留周期

    我读过关于强 弱的帖子self打破保留周期 但我仍然对它们如何工作感到困惑 我理解使用 weak typeof self weakSelf self创建对自我的弱引用 但我对强引用感到困惑 据我了解 强引用是指对self这样它就不会在块结束
  • 如何在目标c中从网络提供商获取用户的当前位置?

    在离线模式下如何获取用户在ios中的当前位置 是否可以通过网络提供商获取位置 我给你完整的解决方案 如果你想实现这一点 你应该使用核心定位框架 第一步 在 h文件中导入CoreLocation框架 import
  • 如何对其中包含自定义对象的 NSMutableArray 进行排序?

    我想做的事情看起来很简单 但我在网上找不到任何答案 我有一个NSMutableArray对象 假设它们是 Person 对象 我想排序NSMutableArray通过 Person birthDate 这是一个NSDate 我认为这与这个方
  • UITableView 显示的行数多于 numberOfRowsInSection 中指定的行数:

    我希望我的 tableView 显示 6 行 其中包含文本 在本例中为 示例 据我所知 我有我的numberOfSectionsInTableView and numberOfRowsInSection 设置正确 请参阅下面的示例代码 NS
  • 如何通过 CollectionView 中的流布局将单元格对齐到顶部

    在此代码中 我尝试更改 UICollectionView 的第一个单元格的大小以及具有相同大小的其他单元格的大小 但在第一行中 当我想要两个单元格出现时 只有一个单元格出现 func collectionView collectionVie
  • 如何在核心数据中应用group by子句

    我正在实现 tableview 我想在 tableview 部分显示类名 并且我正在尝试获取 使用核心数据实现的数据库中的类值 我想使用类名上的 group by 子句获取数据 这是我的代码 AppDelegate appDelegate
  • 应用程序因使用私有 API“commentText”而被拒绝

    我的应用程序更新刚刚被拒绝 并显示以下消息 您的应用程序使用或引用以下非公共 API 评论文本 我搜索了 StackOverflow 以了解如何使用 nm 和 otool 来检查我的库中的私有 API 但我无法让它工作 另外 我有一种轻微的
  • 完成后未删除时如何重用 CABasicAnimation?

    很多人都在谈论在使用 CABasicAnimation 对象后保留它 所以通过设置 完成时删除 否 当动画完成时 动画对象保持附加到图层 在不创建新的 CABasicAnimation 的情况下 如何重新启动该动画 保留这个物体有什么意义呢
  • iOS UITest:如何找到UITableViewCell的AccessoryView?

    你好我正在学习UITests now 我有个问题 如何检测accessoryView的点击tableViewCell 在UI测试中 下面是我的tableViewCell 我想要检测细节闭合配件视图水龙头 像这样 app tables cel

随机推荐