自定义单元格中的按钮并重新加载父表视图

时间:2011-04-05 09:22:18

标签: iphone uitableview

我在 tableView 中加载了 tableViewController 和RSS Feed。我想实现“标题类似”单元格(类型为 OrderCell.h / .m )的“按日期排序”和“按受欢迎程度排序”自定义按钮重新排序 rssItems 数组并在按下时刷新表视图。

如何从 OrderCell 对象方法刷新 tableView ?我没有问题重新排序rssItems数组,因为我将它定义为一个静态var,静态方法可以从类 TableViewController 之外获得。 当用户点击“order by”按钮时,我的问题是调用 [xxx.tableView reloadData]; 。 由于OrderCell对象是从TableViewController对象实例化的,我如何调用TableViewController对象的重载方法?

提前致谢, 卢卡

2 个答案:

答案 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的委托, 祝你好运