iOS7在导航控制器推送视图设置中按协议向后传递数据

内尔姆

我在代码中尝试了许多自定义委托示例,以将数据从视图B发送回父视图A。为什么会出现NULL?我应该缺少一些东西。请帮忙。如何在父视图中调用setupDate以接收(NSDate *)setAlarmDate?

父视图

#import "SetupViewController.h"

@interface ViewController : UIViewController <SetupViewControllerDelegate> {
NSTimer *timer;
}
@end

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([[segue identifier] isEqualToString:@"setupview"]) {
    NSLog(@"prepare for segue");
    SetupViewController *svc = [[SetupViewController alloc] init];
    svc.delegate = self;

-(void)setupDate:(NSDate *)setAlarmDate{
NSLog(@"Hey Hey");
NSLog(@"%@", setAlarmDate);
}
@end

查看B

@protocol SetupViewControllerDelegate <NSObject>
@required
-(void)setupDate:(NSDate *)setAlarmDate;
@end

@interface SetupViewController : UIViewController
@property (nonatomic, strong) id <SetupViewControllerDelegate> delegate;
//IB
@property (weak, nonatomic) IBOutlet UIDatePicker *pDatePicker;
@end

.m

#import "SetupViewController.h"
#import "ViewController.h"
@implementation SetupViewController
-(void)viewWillDisappear:(BOOL)animated{
NSDate *date = [self.pDatePicker date];
[[self delegate] setupDate:date];
}
@end
乔纳森

您应该UIViewController使用segue的destinationViewController属性访问,而不是分配您自己的实例,这就是您的的原因alarmDate = NULL

例如

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"setupview"])
    {
        NSLog(@"prepare for segue");
        SetupViewController *svc = [segue destinationViewController];
        svc.delegate = self;
    }
}

此外,正如@Neru所提到的,您的代表应被限定为软弱而不是强壮。这样做的原因是,如果未delegate = nil在dealloc方法中显式设置,则会导致一个保留周期

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS/Swift 3:在非连续视图控制器之间向后传递数据

来自分类Dev

实现协议以将数据从推送的视图控制器传递回视图控制器

来自分类Dev

如何在导航控制器层次结构中限制iOS7中每个视图控制器的方向

来自分类Dev

如何快速弹出视图控制器后传递数据

来自分类Dev

当用户点击通知IOS7时导航到特定的视图控制器

来自分类Dev

模拟iOS7控制器推送动画

来自分类Dev

iOS7 / IOS8在视图控制器中仅允许纵向

来自分类Dev

iOS7 / IOS8在视图控制器中仅允许纵向

来自分类Dev

iOS使用情节提要推送视图控制器时传递数据

来自分类Dev

导航控制器以编程方式查看控制器无法正常运行IOS7

来自分类Dev

在iOS7中处理一个视图控制器的自动旋转

来自分类Dev

如何在情节提要iOS7中正确重用模式视图/控制器

来自分类Dev

如何将数据传递到导航控制器中嵌入的集合视图控制器

来自分类Dev

将数据传递到导航控制器中的另一个视图控制器

来自分类Dev

在推送导航控制器的视图控制器中实现 MapKit 的有效方法?

来自分类Dev

使用Storyboard ios7在选项卡栏控制器中设置所选图像

来自分类Dev

使用Storyboard ios7在选项卡栏控制器中设置选定的图像

来自分类Dev

从模型中的json数据转换日期格式,然后传递给控制器

来自分类Dev

Swift:将数据从视图控制器传递到导航控制器

来自分类Dev

多个设置删除视图控制器中的导航栏

来自分类Dev

iOS-在iOS7中获取模式控制器的父控制器

来自分类Dev

设置导航视图控制器的背景

来自分类Dev

iOS:从导航堆栈中删除视图控制器

来自分类Dev

设置导航控制器的初始视图控制器

来自分类Dev

ios-收到推送通知时,SWRevealViewController会选择导航控制器中的最后一个视图

来自分类Dev

Swift iOS - 如何打印导航堆栈中尚未推送的所有子视图控制器的列表

来自分类Dev

通过视图控制器,标签栏控制器,导航控制器和视图控制器传递数据

来自分类Dev

通过视图控制器,标签栏控制器,导航控制器和视图控制器传递数据

来自分类Dev

AngularJs-将值从视图传递到控制器,然后传递给服务

Related 相关文章

  1. 1

    iOS/Swift 3:在非连续视图控制器之间向后传递数据

  2. 2

    实现协议以将数据从推送的视图控制器传递回视图控制器

  3. 3

    如何在导航控制器层次结构中限制iOS7中每个视图控制器的方向

  4. 4

    如何快速弹出视图控制器后传递数据

  5. 5

    当用户点击通知IOS7时导航到特定的视图控制器

  6. 6

    模拟iOS7控制器推送动画

  7. 7

    iOS7 / IOS8在视图控制器中仅允许纵向

  8. 8

    iOS7 / IOS8在视图控制器中仅允许纵向

  9. 9

    iOS使用情节提要推送视图控制器时传递数据

  10. 10

    导航控制器以编程方式查看控制器无法正常运行IOS7

  11. 11

    在iOS7中处理一个视图控制器的自动旋转

  12. 12

    如何在情节提要iOS7中正确重用模式视图/控制器

  13. 13

    如何将数据传递到导航控制器中嵌入的集合视图控制器

  14. 14

    将数据传递到导航控制器中的另一个视图控制器

  15. 15

    在推送导航控制器的视图控制器中实现 MapKit 的有效方法?

  16. 16

    使用Storyboard ios7在选项卡栏控制器中设置所选图像

  17. 17

    使用Storyboard ios7在选项卡栏控制器中设置选定的图像

  18. 18

    从模型中的json数据转换日期格式,然后传递给控制器

  19. 19

    Swift:将数据从视图控制器传递到导航控制器

  20. 20

    多个设置删除视图控制器中的导航栏

  21. 21

    iOS-在iOS7中获取模式控制器的父控制器

  22. 22

    设置导航视图控制器的背景

  23. 23

    iOS:从导航堆栈中删除视图控制器

  24. 24

    设置导航控制器的初始视图控制器

  25. 25

    ios-收到推送通知时,SWRevealViewController会选择导航控制器中的最后一个视图

  26. 26

    Swift iOS - 如何打印导航堆栈中尚未推送的所有子视图控制器的列表

  27. 27

    通过视图控制器,标签栏控制器,导航控制器和视图控制器传递数据

  28. 28

    通过视图控制器,标签栏控制器,导航控制器和视图控制器传递数据

  29. 29

    AngularJs-将值从视图传递到控制器,然后传递给服务

热门标签

归档