要實現的功能是這樣的:在rootView中一個TableView,剛加載程序的時候是空白的。當按下添加按鈕之后,在下個頁面設置好值,並要求回傳給rootView,並在視圖翻轉完成后就刷新好rootView的TableView表。
解答:可以用以下知識完成:(1)頁面間消息機制NSNotificationCenter;(2)少數據量的時候,用NSUserDefaults或者共同屬性實現值的傳遞;大數據量的時候,就用delegate來實現存取。
(3)用reLoadData來實現刷新表格數據。代碼如下:
1、在rootView中建立一個消息中心,用來監控下個頁面是否傳消息過來。一接到消息就調用reRoadTableView函數
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(reRoadTableView)
name:@"saveSetting"//消息名
object:nil];//注意是nil
在下個頁面建立響應的消息post點,可以放在確定按鈕里面:
[[NSNotificationCenter defaultCenter] postNotificationName:@"saveSetting" object:self];//發送消息給root
2、寫reRoadTableView函數,關鍵語句是[timerTab reloadData]
- (void) reRoadTableView
{
// self.finalSettings = [[NSUserDefaults standardUserDefaults] valueForKey:@"settings"]; //接收數組,第二種方法
NSLog(@"你看到我就說明消息機制起作用了!");//消息機制工作正常
NSLog(@"我收到的Tag是:%@",setTag);//沒收到
self.setDate = [NSDate date];//retainCount仍舊為1
self.setTag = @"吃飯時間到!";
NSDateFormatter *format = [[NSDateFormatter alloc]init];
[format setDateFormat:@"MM-dd HH:mm"];
self.strDate = [format stringFromDate:setDate];//轉化為NSString
[format release];
[timerTab reloadData];
}
其實reLoadData方法被調用之后,系統會重新執行一遍TableViewDelegate的相關函數,最主要的cellFor***方法,單元格的設置信息會被重新執行一遍。