定制单元格中的按钮和重新加载父表格视图
问题描述:
我有tableViewController和RSS源加载在表查看。我想用“按日期排序”和“按热门程度排序”自定义按钮来实现“标头状”单元(类型为OrderCell.h/.m),按下后重新排列数组并刷新表格视图。定制单元格中的按钮和重新加载父表格视图
我该如何刷新tableView from OrderCell object method?我没有任何问题重新排序rssItems数组,因为我将它定义为静态方法,可以从类TableViewController以外的类中使用静态方法。 我的问题是调用[xxx.tableView reloadData];当用户点击按钮“order by”。 由于OrderCell对象是从TableViewController对象实例化的,我怎样才能调用TableViewController对象的重载方法?
由于提前, 卢卡
答
你可以定义自己的协议,这将是由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];
}
答
附加代表你的其他类,你的表视图控制器和当前的tableview控制器分配给该委托,并在表视图控制器添加像
-(void) updateTableItems {
[self.table reloadData];
}
-(void) threadLoop {
[self performSelectorOnMainThread:@selector(updateTableItems) withObject:nil waitUntilDone:NO];
}
的方法
现在使用其他类的代理调用您的表视图控制器threadloop, 祝你好运
工程就像一个魅力!谢谢你,感谢Delgate模式:) Luka – luigi7up 2011-04-05 10:23:07
@ luigi7up:我很高兴它可以帮助你... – Jhaliya 2011-04-05 10:28:51