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







  • 相关阅读:
    EXCEL中统计个数问题
    Boot Windows XP from a USB flash drive
    转:用VHD文件将Windows 7安装到虚拟磁盘
    CPU性能排名
    活动目录维护
    IE7占用CPU资源非常高
    不得不看:Windows Data Protection
    硬盘模式为UDMA 2.
    转载:NC6400安装Win7系统驱动列表及注意事项
    HP笔记本电池
  • 原文地址:https://www.cnblogs.com/lixingle/p/3312962.html
Copyright © 2011-2022 走看看