- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个 View Controller ,分别称为 ViewController1 和 ViewController2。当我想加载 ViewController2 时,从 ViewController1 调用模态 segue。我在 ViewController1 中有一个方法,需要在 ViewController2 显示时调用。我的想法是在 ViewController2 中有一个属性是对 ViewController1 的引用,以便我可以访问该方法。
@property (strong, nonatomic) ViewController1 *vc1Reference;
该属性将在 prepareForSegue 方法中设置,如下所示:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {//1
if ([[segue identifier] isEqualToString:@"sequeToVC2"]) {//2
ViewController2 *vc2 = segue.destinationViewController;//3
vc2.vc1Reference = (ViewController1*)segue.sourceViewController;//4
}
}
但是第 4 行给了我这个错误: ARC 不允许将 Objective-C 指针隐式转换为“int *”。
我应该如何设置引用?
最佳答案
您走在正确的轨道上,但正确的方法是使用委托(delegate)。
您在 vc2 @interface
中声明了一个委托(delegate)属性:
@property (nonatomic, weak) id <vc2delegate> delegate //[1] (in vc2.h)
prepareForSegue
中设置了委托(delegate):
vc2.delegate = self; //[2] (in vc1.m)
@interface
上面
@protocol vc2delegate //[3] (in vc2.h)
- (void) delegateMethod;
@end
@interface
上vc1 中的行在尖括号中添加协议(protocol)名称:
#import vc2.h
@interface vc1 <vc2delegate> //[4] (in vc1.h)
#include
vc1 或知道其他任何事情。
@property (strong, nonatomic) ViewController1 *vc1Reference;
weak
的使用引用。您不想制作 strong
引用,因为您真的不想与委托(delegate)有任何关系,除非知道它可以处理您在协议(protocol)中指定的方法。委托(delegate)通常是创建委托(delegate)的对象,创建一个 strong
反向引用可能会导致内存泄漏,因为两个对象都不会消失。 vc2.vc1Reference = (ViewController1*)segue.sourceViewController;
vc2.delegate = segue.sourceViewController
if (self.delegate respondsToSelector:@selector('delegateMethod')
{
[self.delegate delegateMethod];
}
- (void) delegateMethod
{
// someaction;
}
关于objective-c - 在 prepareForSegue 中传递对 ViewController 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14228191/
我正在使用模板主从应用程序。我从 SplitViewController 添加了一个模态 segue,并为其指定了标识符“DisplayLoginView”。 我从我的 detailViewContr
我很好奇这个方法 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender; 我在 UIViewController.h
我有一个 UINavigationController有一个 UITableview装在里面。里面这个UITableView我有一个 prototype细胞,我用静态数据重用了几次,这些数据永远不会改
我要函数,它们都触发performSegueWithIdentifier以同样的方式。但是根据调用哪个函数,我需要在 prepareForSegue 中传递不同的参数. 就像是 func first(
我已经有一段时间没有进行任何 iOS 编程了,所以请原谅我这个简单的问题。我已经搜索过了,也许我只是想多了。 我有一个名为 ShowStreamDetails 的 segue,将动态原型(protot
当我通过prepareForSegue将数据从FirstViewController传递到SecondViewController( TableView )时,我在secondViewControll
我的应用有核心数据和两个 View CoursesTableViewController 和 DetailViewController。 如果用户点击 Detail Disclosure 按钮转到 D
我有一个带有嵌入式导航 Controller 的 Storyboard (xcode5)(导航 Controller 指向我的主视图 Controller )。 我已经为我想通过我的代码打开的新 Vi
我的应用程序有一个非常奇怪的问题。我在我的应用程序中使用 AFNetworking 框架。我正在加载一些带有图像的提要,然后单击操作打开带有详细描述和大图像的新 View 。所以我将 IdPhoto
我设置了一个 View ,用户可以在其中选择一张照片,然后将其用作个人资料照片。一旦他们选择了图像,就应该更新 UIImageView 。我使用 prepareForSegue 方法将信息传递给包含
我有以下 3 种使用 Storyboard的方法,其中我有一个从“查看电影信息”按钮到下一个 View 的“segue”连接。标识符是“web” 当我单击按钮时,我调用此方法:(IBAction)sy
在我的应用程序中有一个 UITableView 显示 Core Data 对象。当用户点击一行时,必须显示所选对象的详细 View 。详细 View 在 EditToDoItemViewControl
我正在使用模态转场将数据从 SignUpViewController 传递到 RAVerificationViewController。出于某种原因,我的姓名、密码、电话和电子邮件值为零,但宿舍和角色
我确定我有两个 View Controller ,它们有适当的文件作为它们的类。 (ViewController1.swift 和 ViewController2.swift)我试图使用以下代码将数据
我在使用 prepareforSegue 的 View Controller 之间传递字符串 (StringVar) 时遇到问题。我已经研究了关于这个主题的各种教程,但我仍然没有成功(我是新手,所以问
我使用 prepareForSegue 方法将 location_id 从 LocationTableViewController 传递到 BeerTableViewController,以便在点击位
我正在使用 SWRevealViewController 构建侧边栏菜单。从菜单(UITableView)中选择一个元素时,我有选择正确 Controller 的方法。 segue 标识符/名称在 S
我正在从 Storyboard的世界转向没有 Storyboard的世界。我想知道在这种情况下如何实现 prepareForSegue 方法。因为此方法使用 segue 标识符,而我知道提供 segu
我想在 prepareForSegue 中运行一些代码。问题是我正在以编程方式更改 View ,因此未运行 prepareForSegue 函数。我也不知道如何运行它,因为我不能给它一个标识符。 准备
我正在制作一个表格 View ,其中包含 channel ,用户可以点击该 channel 进入该 channel 。当用户点击该 channel 时,我想从 firebase 获取 channel
我是一名优秀的程序员,十分优秀!