UItableview 在自定义单元格上使用带有提示的警报视图重新加载数据的问题
Posted
技术标签:
【中文标题】UItableview 在自定义单元格上使用带有提示的警报视图重新加载数据的问题【英文标题】:Problem with UItableview reload data using alert view with prompt on a custom cell 【发布时间】:2009-06-30 04:16:25 【问题描述】:我有一个 UItableViewController 和一个使用界面生成器设计的自定义单元格。自定义单元格上有一个按钮和一个标签。单击时的按钮将触发带有提示的警报视图。输入文本并按确定后,单元格上的标签将在表格上显示更新的信息。问题是在我单击其中一个单元格之前,标签不会更新。我不能使用 [tableview reloaddata] 因为我使用的是 IB,它创建了一个单独的 .h 和 .m UItableViewCell 文件,这是我在其中放置带有提示代码的警报视图的地方。解除警报视图时,如何调用重新加载数据来更新表。我在viewWillAppear下的UItableViewController中放了[tableview reloaddata],但是不起作用。
【问题讨论】:
【参考方案1】:您可以保留对 UITableViewController 的引用并从单元格调用 reloaddata。
【讨论】:
【参考方案2】:我对 iPhone 开发还很陌生,但是,我一次又一次看到的设计模式之一是委托。这允许您扩展功能,同时保持组件的可重用性。
我相信您可以为 UIAlertView 设置一个委托,然后通过 @interface 定义在您的主 UITableViewController 上实现该协议。这意味着只要您在实例化后在 AlertView 对象中设置委托属性,您的控制器就会收到与特定警报相关的事件通知。
看看函数...
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
如果你设置了上面的delegation,然后重载这个函数,应该可以在专门按下alert view的时候调用[tableview reloadData]。
还有——你不能定义按钮在 UITableViewController 中调用的 IBAction 方法是否有原因?这将允许您避免绕过单元格的父级,似乎更好地遵守 MVC。
【讨论】:
【参考方案3】:我已经想通了。见以下代码:
UItableView *tableView = (UItableView *)self.superview;
[tableView reloadData];
self.superview
是诀窍!
【讨论】:
以上是关于UItableview 在自定义单元格上使用带有提示的警报视图重新加载数据的问题的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 单元格未显示放置在自定义单元格上的 UITableView(KPDropDown)
在自定义 tableView 单元格上使用 contentView 属性(作为标题传递)如何防止它使自定义属性无效?
带有 UIView 子类的 UITableViewCell 在单元格上创建多个图层