2011-04-05 53 views
0

我有tableViewController和RSS源加载在表查看。我想用“按日期排序”和“按热门程度排序”自定义按钮来实现“标头状”单元(类型为OrderCell.h/.m),按下后重新排列数组并刷新表格视图。定制单元格中的按钮和重新加载父表格视图

我该如何刷新tableView from OrderCell object method?我没有任何问题重新排序rssItems数组,因为我将它定义为静态方法,可以从类TableViewController以外的类中使用静态方法。 我的问题是调用[xxx.tableView reloadData];当用户点击按钮“order by”。 由于OrderCell对象是从TableViewController对象实例化的,我怎样才能调用TableViewController对象的重载方法?

由于提前, 卢卡

回答

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]; 
} 
+0

工程就像一个魅力!谢谢你,感谢Delgate模式:) Luka – luigi7up 2011-04-05 10:23:07

+0

@ luigi7up:我很高兴它可以帮助你... – Jhaliya 2011-04-05 10:28:51

0

附加代表你的其他类,你的表视图控制器和当前的tableview控制器分配给该委托,并在表视图控制器添加像

-(void) updateTableItems { 
    [self.table reloadData]; 
} 


-(void) threadLoop { 

[self performSelectorOnMainThread:@selector(updateTableItems) withObject:nil waitUntilDone:NO]; 

} 
的方法

现在使用其他类的代理调用您的表视图控制器threadloop, 祝你好运

相关问题