我在 tableView 中加载了 tableViewController 和RSS Feed。我想实现“标题类似”单元格(类型为 OrderCell.h / .m )的“按日期排序”和“按受欢迎程度排序”自定义按钮重新排序 rssItems 数组并在按下时刷新表视图。
如何从 OrderCell 对象方法刷新 tableView ?我没有问题重新排序rssItems数组,因为我将它定义为一个静态var,静态方法可以从类 TableViewController 之外获得。 当用户点击“order by”按钮时,我的问题是调用 [xxx.tableView reloadData]; 。 由于OrderCell对象是从TableViewController对象实例化的,我如何调用TableViewController对象的重载方法?
提前致谢, 卢卡
答案 0 :(得分:1)
您可以定义自己的协议,该协议将由TableViewController
类实现(确认),
在myTableClass.h中
@protocol AppDelegate
-(void) OrderSelected ;
@end
@interface myTableClass : UITableViewController <AppDelegate>
{
.......
}
@end
在OrderCell.h
@interface OrderCell : .....
{
id<AppDelegate> myDelegate;
}
@property(nonatomic,assign) id<AppDelegate> myDelegate;;
@end
在OrderCell.cpp
@synthesize myDelegate;
-(void) myButtonAction:(id) sender
{
[myDelegate OrderSelected];
}
和
在myTableClass.cpp中
创建OrderCell时,只需编写在线声明
即可myOrderCell.myDelegate = self;
并实现协议功能
-(void) OrderSelected
{
[self.tableView reloadTable];
}
答案 1 :(得分:0)
首先在您的其他类中为您的表视图控制器添加委托,并将当前的tableview控制器分配给该委托,并在表视图控制器中添加类似
的方法 -(void) updateTableItems {
[self.table reloadData];
}
-(void) threadLoop {
[self performSelectorOnMainThread:@selector(updateTableItems) withObject:nil waitUntilDone:NO];
}
现在使用表视图控制器的其他类调用threadLoop的委托, 祝你好运