iOS新手请教 View之间传值

zioc2014 2014-06-12 05:43:12
ItemsView:项列表
ItemDetailView:查看项
AddItemView:添加项

数据在sqlite,用得是storyboard。


ItemsView点击一项进入ItemDetailView,ItemDetail点编辑进入AddItemView。

AddItem完成后需要重新绑定 ItemDetailView和ItemsView的数据,请问这里需不需要用代理?不用怎么处理?


另外请问这样的结构有没有问题?会不会做的太复杂了?


...全文
703 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ReyZhang 2014-07-14
  • 打赏
  • 举报
回复
引用 11 楼 zioc2014 的回复:
[quote=引用 10 楼 zioc2014 的回复:] [quote=引用 9 楼 zhanglei5415 的回复:] [quote=引用 8 楼 zioc2014 的回复:] [quote=引用 7 楼 zioc2014 的回复:] [quote=引用 6 楼 zhanglei5415 的回复:] [quote=引用 4 楼 zioc2014 的回复:] [quote=引用 3 楼 zhanglei5415 的回复:] 而我给你的建议是使用NSNotificationCenter“通知中心”来实现,设置ItemDetailView和ItemsView为观察者
我是新手 你说说 这里用NSNotificationCenter 好在哪里呢[/quote] 观察者模式是专门解决这种问题的,当一个对象发生改变时去通过其它对象(订阅者)。它的好处是"解藕",对象之间松藕合而非紧藕合[/quote] 非常感谢。现在遇到的问题,[[NSNotificationCenter defaultCenter] 的 addObserver 和 removeObserver 我应该写在哪里? 没有remove会不会引起问题? 我分别写在Init和dealloc里,就没用,addObserver写在DidLoad里就有用。[/quote] ARC的项目 [/quote] 注册可写在viewdidload 里,删除可写在viewdidunload中[/quote] viewdidunload 已经被废弃了..[/quote] 放在dealloc里面吧?[/quote] 说反了吧
zioc2014 2014-07-06
  • 打赏
  • 举报
回复
引用 10 楼 zioc2014 的回复:
[quote=引用 9 楼 zhanglei5415 的回复:] [quote=引用 8 楼 zioc2014 的回复:] [quote=引用 7 楼 zioc2014 的回复:] [quote=引用 6 楼 zhanglei5415 的回复:] [quote=引用 4 楼 zioc2014 的回复:] [quote=引用 3 楼 zhanglei5415 的回复:] 而我给你的建议是使用NSNotificationCenter“通知中心”来实现,设置ItemDetailView和ItemsView为观察者
我是新手 你说说 这里用NSNotificationCenter 好在哪里呢[/quote] 观察者模式是专门解决这种问题的,当一个对象发生改变时去通过其它对象(订阅者)。它的好处是"解藕",对象之间松藕合而非紧藕合[/quote] 非常感谢。现在遇到的问题,[[NSNotificationCenter defaultCenter] 的 addObserver 和 removeObserver 我应该写在哪里? 没有remove会不会引起问题? 我分别写在Init和dealloc里,就没用,addObserver写在DidLoad里就有用。[/quote] ARC的项目 [/quote] 注册可写在viewdidload 里,删除可写在viewdidunload中[/quote] viewdidunload 已经被废弃了..[/quote] 放在dealloc里面吧?
zioc2014 2014-07-05
  • 打赏
  • 举报
回复
引用 9 楼 zhanglei5415 的回复:
[quote=引用 8 楼 zioc2014 的回复:] [quote=引用 7 楼 zioc2014 的回复:] [quote=引用 6 楼 zhanglei5415 的回复:] [quote=引用 4 楼 zioc2014 的回复:] [quote=引用 3 楼 zhanglei5415 的回复:] 而我给你的建议是使用NSNotificationCenter“通知中心”来实现,设置ItemDetailView和ItemsView为观察者
我是新手 你说说 这里用NSNotificationCenter 好在哪里呢[/quote] 观察者模式是专门解决这种问题的,当一个对象发生改变时去通过其它对象(订阅者)。它的好处是"解藕",对象之间松藕合而非紧藕合[/quote] 非常感谢。现在遇到的问题,[[NSNotificationCenter defaultCenter] 的 addObserver 和 removeObserver 我应该写在哪里? 没有remove会不会引起问题? 我分别写在Init和dealloc里,就没用,addObserver写在DidLoad里就有用。[/quote] ARC的项目 [/quote] 注册可写在viewdidload 里,删除可写在viewdidunload中[/quote] viewdidunload 已经被废弃了..
ReyZhang 2014-07-04
  • 打赏
  • 举报
回复
引用 8 楼 zioc2014 的回复:
[quote=引用 7 楼 zioc2014 的回复:] [quote=引用 6 楼 zhanglei5415 的回复:] [quote=引用 4 楼 zioc2014 的回复:] [quote=引用 3 楼 zhanglei5415 的回复:] 而我给你的建议是使用NSNotificationCenter“通知中心”来实现,设置ItemDetailView和ItemsView为观察者
我是新手 你说说 这里用NSNotificationCenter 好在哪里呢[/quote] 观察者模式是专门解决这种问题的,当一个对象发生改变时去通过其它对象(订阅者)。它的好处是"解藕",对象之间松藕合而非紧藕合[/quote] 非常感谢。现在遇到的问题,[[NSNotificationCenter defaultCenter] 的 addObserver 和 removeObserver 我应该写在哪里? 没有remove会不会引起问题? 我分别写在Init和dealloc里,就没用,addObserver写在DidLoad里就有用。[/quote] ARC的项目 [/quote] 注册可写在viewdidload 里,删除可写在viewdidunload中
zioc2014 2014-07-03
  • 打赏
  • 举报
回复
引用 7 楼 zioc2014 的回复:
[quote=引用 6 楼 zhanglei5415 的回复:] [quote=引用 4 楼 zioc2014 的回复:] [quote=引用 3 楼 zhanglei5415 的回复:] 而我给你的建议是使用NSNotificationCenter“通知中心”来实现,设置ItemDetailView和ItemsView为观察者
我是新手 你说说 这里用NSNotificationCenter 好在哪里呢[/quote] 观察者模式是专门解决这种问题的,当一个对象发生改变时去通过其它对象(订阅者)。它的好处是"解藕",对象之间松藕合而非紧藕合[/quote] 非常感谢。现在遇到的问题,[[NSNotificationCenter defaultCenter] 的 addObserver 和 removeObserver 我应该写在哪里? 没有remove会不会引起问题? 我分别写在Init和dealloc里,就没用,addObserver写在DidLoad里就有用。[/quote] ARC的项目
zioc2014 2014-07-03
  • 打赏
  • 举报
回复
引用 6 楼 zhanglei5415 的回复:
[quote=引用 4 楼 zioc2014 的回复:] [quote=引用 3 楼 zhanglei5415 的回复:] 而我给你的建议是使用NSNotificationCenter“通知中心”来实现,设置ItemDetailView和ItemsView为观察者
我是新手 你说说 这里用NSNotificationCenter 好在哪里呢[/quote] 观察者模式是专门解决这种问题的,当一个对象发生改变时去通过其它对象(订阅者)。它的好处是"解藕",对象之间松藕合而非紧藕合[/quote] 非常感谢。现在遇到的问题,[[NSNotificationCenter defaultCenter] 的 addObserver 和 removeObserver 我应该写在哪里? 没有remove会不会引起问题? 我分别写在Init和dealloc里,就没用,addObserver写在DidLoad里就有用。
ReyZhang 2014-06-23
  • 打赏
  • 举报
回复
引用 4 楼 zioc2014 的回复:
[quote=引用 3 楼 zhanglei5415 的回复:] 而我给你的建议是使用NSNotificationCenter“通知中心”来实现,设置ItemDetailView和ItemsView为观察者
我是新手 你说说 这里用NSNotificationCenter 好在哪里呢[/quote] 观察者模式是专门解决这种问题的,当一个对象发生改变时去通过其它对象(订阅者)。它的好处是"解藕",对象之间松藕合而非紧藕合
zioc2014 2014-06-19
  • 打赏
  • 举报
回复
引用 2 楼 hitwhylz 的回复:
当Add新信息, 返回原来的界面时候, 会调用viewWillAppear/viewDidAppear。 选一个方法,写上你的重新获取新数据代码。 然后刷新一下列表。 不用delegate
你好,我现在的问题是 如果ItemDetailView用viewWillAppear来获取数据 AddItem后会crash AddItem代码:

        [sqliteHelper open];
        BOOL isSuccess = [sqliteHelper updateModel:model];
        [sqliteHelper close]; //这句还没执行完,viewWillAppear就开始读取数据库了
        
        if(isSuccess)
            [self dismissViewControllerAnimated:YES completion:nil];
        else
            NSLog(@"Update Error.");
因为 ViewWillAppear里面也要使用数据库,会出现如注释所述问题。如果用viewDidAppear就不会,但viewDidAppear显示效果不好,数据载入是等view显示以后执行的。 附上sqliteHelper close方法
-(void)close
{
    sqlite3_finalize(statement);
    sqlite3_close(db);
    
}
zioc2014 2014-06-19
  • 打赏
  • 举报
回复
引用 3 楼 zhanglei5415 的回复:
而我给你的建议是使用NSNotificationCenter“通知中心”来实现,设置ItemDetailView和ItemsView为观察者
我是新手 你说说 这里用NSNotificationCenter 好在哪里呢
Colin丶 2014-06-13
  • 打赏
  • 举报
回复
当Add新信息, 返回原来的界面时候, 会调用viewWillAppear/viewDidAppear。 选一个方法,写上你的重新获取新数据代码。 然后刷新一下列表。 不用delegate
ReyZhang 2014-06-13
  • 打赏
  • 举报
回复
而我给你的建议是使用NSNotificationCenter“通知中心”来实现,设置ItemDetailView和ItemsView为观察者
LichKingSZ 2014-06-12
  • 打赏
  • 举报
回复
不用Delegate也可以,只需要在UIViewController的viewDidAppear:方法刷新一下数据就可以了

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    
    [self.tableView reloadData];
}

29,049

社区成员

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

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