ios使用委托传值问题。

sayzly 2016-03-03 08:00:18
.h

@protocol LinkValueDelegate <NSObject>

@required

-(void)ConValue:(NSString *)value;

@end

@interface FirstTableViewController : UITableViewController

@property(weak, nonatomic) id <LinkValueDelegate> dalegate;

@end

.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (_dalegate && [_dalegate respondsToSelector:@selector(ConValue:)]){
NSLog(@"响应");
[self.dalegate ConValue:_dataArray[indexPath.row]];
}
}

第二个页面的.m

- (void)viewDidLoad {
[super viewDidLoad];
FirstTableViewController * ftvc = [[FirstTableViewController alloc]init];
ftvc.dalegate = self;
// Do any additional setup after loading the view.
}

-(void)ConValue:(NSString *)value{
NSLog(@"111");
_showLabel.text = value;
}

想要第一个页面传值给第二个页面,但总是没法做到,上述输出一个都没有输出,新人求解。
...全文
208 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sayzly 2016-03-04
  • 打赏
  • 举报
回复
引用 12 楼 wangxiongtao 的回复:
我感觉你的流程是先有第一个页面了,然后push一个第2个页面,然后再生成一个新的第一个页面类型的ViewController(叫他new),然后你把第2个页面的self赋值到new的delegate上。然后你去判断第一个页面的delegate肯定就是空的了。
恩 就是这个原因 - -;
奋飞梦 2016-03-04
  • 打赏
  • 举报
回复
首先要搞清楚你是要顺序传值,还是要回调!顺序传值直接通过属性传值就可以了,回调的话就用代理实现吧,当然简单的回调推荐你用block语句
hpcph 2016-03-04
  • 打赏
  • 举报
回复
if (_dalegate && [_dalegate respondsToSelector:@selector(ConValue:)])
//应该是你这个判断条件的有点奇怪吧,
// 好好想想就可以了
//还有 代理不是dalegate, 是delegate
wangxiongtao 2016-03-04
  • 打赏
  • 举报
回复
我感觉你的流程是先有第一个页面了,然后push一个第2个页面,然后再生成一个新的第一个页面类型的ViewController(叫他new),然后你把第2个页面的self赋值到new的delegate上。然后你去判断第一个页面的delegate肯定就是空的了。
draven_kill 2016-03-04
  • 打赏
  • 举报
回复
dataArray有值吗?打印一下看看。。 if (_dalegate && [_dalegate respondsToSelector:@selector(ConValue:)])换成if ([_dalegate respondsToSelector:@selector(ConValue:)])
dirdirdir3 2016-03-04
  • 打赏
  • 举报
回复
用kvo吧,方便
ravatar0423 2016-03-04
  • 打赏
  • 举报
回复
你的第二个UIViewController是否实现了这个委托呢? LinkValueDelegate 如果没有肯定不可能调用的
sayzly 2016-03-03
  • 打赏
  • 举报
回复
引用 5 楼 disburden 的回复:
不至于吧 if (_dalegate && [_dalegate respondsToSelector:@selector(ConValue:)]) 把_dalegate换成self.dalegate 然后在这里打个断点,看看delegate到底有没有值
没有值。。。什么情况
sayzly 2016-03-03
  • 打赏
  • 举报
回复
引用 3 楼 disburden 的回复:
FirstTableViewController * ftvc = [[FirstTableViewController alloc]init]; 把这个ftvc定义为全局的试试
试了试,还是不行 - -;
不担心 2016-03-03
  • 打赏
  • 举报
回复
不至于吧 if (_dalegate && [_dalegate respondsToSelector:@selector(ConValue:)]) 把_dalegate换成self.dalegate 然后在这里打个断点,看看delegate到底有没有值
不担心 2016-03-03
  • 打赏
  • 举报
回复
FirstTableViewController * ftvc = [[FirstTableViewController alloc]init]; 把这个ftvc定义为全局的试试
sayzly 2016-03-03
  • 打赏
  • 举报
回复
求个人- -,弄好久了
sayzly 2016-03-03
  • 打赏
  • 举报
回复
没有人吗,晕死

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧