我创建了一个自定义segue,它在容器内部提供了一个与Apple自己的模态视图控制器非常相似的视图控制器(我已经将它实现为UIViewController子类).
我现在正在尝试创建一个自定义展开segue但是我无法获得-segueForUnwindingToViewController: fromViewController: identifier:要调用的方法.
我也在-viewControllerForUnwindSegueAction: fromViewController: withSender:我的容器上实现,所以我可以指向正确的视图控制器(呈现此模式的那个)但是应该被要求我的自定义展开segue的方法不会被调用到任何地方.
现在,我解除这种模式的唯一方法是在-returned:方法上做到这一点.
有没有人可以通过自定义展开segue成功完成此操作?
编辑:更多的代码和上下文
我的展开视图控制器在故事板中配置,而不是以编程方式配置.
我有这些与我的控制器中的展开segue相关的代码:
PresenterViewController.m
我在这里使用自定义方法来解除我的自定义模态(-dismissModalViewControllerWithCompletionBlock:).
- (UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController
fromViewController:(UIViewController *)fromViewController
identifier:(NSString *)identifier {
return [[MyModalUnwindSegue alloc] initWithIdentifier:identifier
source:fromViewController
destination:toViewController];
}
-(IBAction)returned:(UIStoryboardSegue *)segue {
if ([segue.identifier isEqualToString:@"InfoUnwindSegue"]) {
[self dismissModalViewControllerWithCompletionBlock:^{}];
}
}
Run Code Online (Sandbox Code Playgroud)
MyModalViewController.m
这里我只用-viewControllerForUnwindSegueAction: fromViewController: withSender:指向我应该放松的视图控制器.
- (UIViewController *)viewControllerForUnwindSegueAction:(SEL)action
fromViewController:(UIViewController *)fromViewController
withSender:(id)sender {
return self.myPresentingViewController;
}
Run Code Online (Sandbox Code Playgroud)
我期待的行为是调用MyModalViewController指向应该处理展开的视图控制器,然后这个视图控制器在-segueForUnwindingToViewController: fromViewController: identifier:调用之前-returned:调用了他的方法.
现在-segueForUnwindingToViewController: fromViewController: identifier:永远不会被召唤.
我还必须说我已经尝试过不同的配置.无处不在,我把我的方法用来返回它从未被调用的unwind segue.我已经读过我可以子类化导航控制器,然后它被调用,但我不知道它如何适合我的解决方案.
编辑2:附加信息 …
所以我有了这个想法,使用UI自动化在我的应用上测试我的屏幕跟踪(使用Google Analytics)的实现.
最初的想法是构建一个UI脚本来浏览屏幕,同时检查是否正在相应地发送跟踪事件.我需要这个,因为有时我无法从视图控制器中编写所有内容,或者事件不按预期顺序转发.无论如何,我应该测试我的应用程序的这个方面,我认为UI自动化是答案.
我已经使用UI自动化工具实现了一个脚本来浏览屏幕,这是正常的.我甚至使用了调整js来使代码更简化,更容易理解.我期待有类似的东西(一般来说,语法只是简化):
Being on screen X
Tap button A
Expect screen Y and tracking event for the screen Y
Run Code Online (Sandbox Code Playgroud)
但是,就我能够检查而言,测试屏幕跟踪是UI自动化无法实现的.或者我错过了什么?
我想创建一个不可见的视图,它保持在所有视图层次结构的顶部,并在每次加载新屏幕时更改其名称,以允许我使用UI自动化测试它,但这个想法听起来有点超过顶部......
你们的人建议什么?寻找另一个UI自动化工具?改为使用单元测试吗?
在此先感谢您的帮助
在Interface Builder中,我有一堆垂直放置的文本字段.我希望它们均匀地分布在垂直空间中,并且所有尺寸都相同.
我找到了Alignment菜单,可以让你排列项目.我找不到分发或调整大小的菜单.Xcode 4是否包含那些布局命令?
我正在开发一个应用程序,我想展示飞往机场的虚构飞机.这可能不是我想要代表飞过地图的唯一事情.
为此,我使用了LocationReminders(他们拥有的MKOverlayPathView子类,ReminderCircleView)中的示例代码,并将其连接到我自己的代表该平面的MKOverlay.此类在overlay类的坐标和radius属性上订阅KVO通知,并在每次更新时使其路径无效.
叠加层以每秒几帧的速度更新它的位置,我也会更新它的半径,这样我就可以模拟透视图(考虑到它是一个模型对象但不是很聪明,但仍然是我找到的最佳解决方案).
我正在使用一个简单的圆形路径进行测试.
此设置工作正常.叠加视图会更新并且行为正确,可以与地图一起缩放.
问题在于,在模拟飞行中,不会在通常靠近目的地的一些区块上绘制覆盖图.圆圈看起来像是在这些瓷砖后面.
我能够理解这个问题中的一件事:每当我观察到圆圈没有被绘制在一些瓷砖上时,如果我缩小,圆圈将被正确绘制.放大或平移并不能解决任何问题.
我的理论是,一些瓷砖(或它们的地图部分)没有被标记为重绘,所以,只有通过缩小我才能强制它.但我认为这与放大似乎没有帮助的事实并不一致.
我不知道我做错了什么,或者我是否碰到了一个小虫或什么东西.我已经使用了注释而且它正在工作但是我失去了表示如果你缩小而不自己观察缩放比例而变小的平面的能力.
我已经在版本5.1,6.0和6.1中进行了测试,行为是一样的.
我目前正在使用Parse开发一个应用程序,我想开始抽象他们的SDK,因为我不知道我是否以及何时将其他提供商或我们的后端替换为另一个.
另一个动机是分离问题:我的所有应用程序代码将使用相同的框架,而我可以更新任何后端细节的框架.
我首先创建了一些泛型类来替换它们的主类.此泛型类定义每个适配器必须实现的协议.然后我有一个Parse适配器,可以将调用转发给Parse SDK.
我可以预测的一些问题是,这需要很多不同的类.在某些情况下,例如Parse,他们也有用于处理Facebook的课程.或者某些部分的架构可能如此不同,以至于没有共同点可以允许这样的东西.
我实际上从未和Stackmob一起走过这么远,因为我和Parse一样,所以我猜第一个版本将分享Parse自己的架构.
你将如何使用Obj-c搜索Apple App Store以执行以下操作...
任何人?
有没有办法跟踪应用程序在后台的时间量,并在应用程序进入iOS前台时显示相同的内容?
ios ×6
objective-c ×6
app-store ×1
appdelegate ×1
autolayout ×1
itunes-store ×1
mapkit ×1
mkoverlay ×1
parsing ×1
segue ×1
stackmob ×1
testing ×1
wrapper ×1
xcode ×1