2011-04-05 55 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, 祝你好運

相關問題