zoukankan      html  css  js  c++  java
  • IOS学习之路十七(通过delegate进行页面传值)

    加入有A B两个页面,要实现从A跳到B的时候把值传过去,现在用delegate协议来实现

    在A中定义一个协议,定义一个实现该协议的属性变量

    在B中定义一个值(要获得的值类型)和set方法。

    要传值B 必须实现A中定义的协议。

    在A中获得B的指针调用set方法传值。

    实例:(我的例子A是一个TableView)

    A:(MenuViewController)

    #import <UIKit/UIKit.h>
    //声明协议
    @protocol ToTopPassValueDelegate;
    
    @interface MenuViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>{
     }
    //声明实现协议的变量(ID类型)
    @property (nonatomic,retain) id<ToTopPassValueDelegate> passValueDelegate;
    @property (weak, nonatomic) IBOutlet UITableView *leftTableView;
    @property (nonatomic,copy) NSArray *arrayData;
    
    @end
    
    //定义协议
    @protocol ToTopPassValueDelegate
    - (void)setValue:(NSString *)value;
    @end
    

    .m文件:

    @synthesize passValueDelegate;
    //当点击一个cell时出发,进行传值及跳转
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
      
        ToDoViewController *topViewController=[[ToDoViewController alloc] init];
        self.passValueDelegate = topViewController;
        [self.passValueDelegate setValue:[self.arrayData objectAtIndex:indexPath.row]];
    //跳转。。。。。
    }
    @end


    B:(ToDoViewController)

    #import <UIKit/UIKit.h>
    #import "MenuViewController.h"
    
    @interface ToDoViewController : UIViewController<ToTopPassValueDelegate>
    
    @property (nonatomic,copy) NSString *value;
    
    @end
    

    .m文件:
    @synthesize value;
    -(void) setValue:(NSString *) str{
        NSLog(@"%@",str);
    }
    

    原文出处:http://blog.csdn.net/wildcatlele







  • 相关阅读:
    怎样用OpenScales发布这些瓦片地图?
    mysql在linux下命令备份数据库
    jQuery EasyUI
    JQuery遮罩层登录
    C#通过线程完成定时执行事件
    JS中showModalDialog 详细使用
    sql时间函数
    asp网页设计流量统计代码
    Rational Rose、PowerDesign、visio的比较
    win环境下eclipse安装指引
  • 原文地址:https://www.cnblogs.com/lixingle/p/3312962.html
Copyright © 2011-2022 走看看