2012-02-29 131 views
2

我在刷新表格時遇到了問題。我創建這樣表格沒有被刷新

for (int i = 0; i < 4; i++) 
{ 

DetailsTable = [[UITableView alloc] initWithFrame:CGRectMake(i*768, 45, 768, 1024) style:UITableViewStyleGrouped]; 
    DetailsTable.dataSource = self; 
    DetailsTable.delegate = self; 
    DetailsTable.tag = i + 1; 
    [scrollView addSubview:DetailsTable]; 
    [DetailsTable release]; 
} 

每當我刷新這樣的表的表[DetailsTable reloadData];它只刷新最後一個表。和其他表沒有得到刷新

如何刷新所有表視圖在iphone

+0

請詳細說明您的reloading.you應該如何重新加載所有的在scrollview上的一些例子是for(int i = 0; i <4; i ++){UItableview ** table =(UITableview **)[scrollview viewwithtag:i + 1]; [table reloadData];} – ajay 2012-02-29 05:35:45

回答

1

這是因爲在DetailsTable最後一個表引用是保留,使這種情況發生 試試這個 在.h文件中添加此

NSMutableArray *tblArr; 

在.m文件添加此

tblArr=[[NSMutableArray alloc] init]; 
for (int i = 0; i < 4; i++) 
{ 
    UITableView *DetailsTable = [[UITableView alloc] initWithFrame:CGRectMake(i*768, 45, 768, 1024) style:UITableViewStyleGrouped]; 
    DetailsTable.dataSource = self; 
    DetailsTable.delegate = self; 
    DetailsTable.tag = i + 1; 
    [scrollView addSubview:DetailsTable]; 
    [tblArr addObject:DetailsTable]; 
    [DetailsTable release]; 
} 

,當你想relaod所有的表使用此

for (int i = 0; i < 4; i++) 
{ 
    [(UITableView *)[tblArr objectAtIndex:i] reloadData]; 
} 
+0

比我怎麼可以觸發特定表的編輯方法 – Harish 2012-02-29 06:31:19

+0

給每個表一個標籤,然後在編輯'UITableViewDelegate'方法通過檢查tableView標記值執行操作。 – hchouhan02 2012-02-29 06:35:38

+0

當我這樣做,它對最後一張表的影響,而不是所有表如何可以解釋與示例代碼 – Harish 2012-02-29 08:00:07

1

您保持覆蓋在循環的PersonDetailsTable屬性的值。因此,該屬性的值是循環退出後的第4個值。您可以針對指向您添加的表的第4個實例的屬性調用reloadData。

爲了做到這一點,你需要一個表視圖(而不是一個屬性引用)的NSMutableArray,並重新加載所有這些可能會循環reloadData調用。當然,在你的UITableView數據源回調函數中,你需要區分哪個表視圖正在調用你的數據,因爲self是數據源,它們都是委託。

+0

朋友我刷新表上的按鈕點擊。這只是添加滾動視圖 – Harish 2012-02-29 05:37:46

+0

這是很好的表,但你在DetailsTable屬性引用上調用reloadData,它指向* only *第四個(最後一個)表,因爲你在循環中覆蓋它 – bryanmac 2012-02-29 05:39:25

+0

我沒有得到你可以更多地解釋與示例代碼 – Harish 2012-02-29 06:15:12

0

您正在創建4個tableView不是4個單元格,並且每次創建表的新實例時都會調用[DetailsTable reloadData];它引用最近的一個DetailsTable實例,即最後一個表。

0

每次在for循環中,變量DetailsTable都將被一個新變量替換。

您應該創建表的陣列,而不是像這樣:

//Declaration 
UITableView *DetailsTable[4]; 

//Implementation 
for (int i = 0; i < 4; i++) 
{ 

DetailsTable[i] = [[UITableView alloc] initWithFrame:CGRectMake(i*768, 45, 768, 1024) style:UITableViewStyleGrouped]; 
    ... 
} 

//And to refresh them 
for(int i = 0; i < 4; i++) 
    [DetailsTable[i] reloadData]; 
-1

您不能添加表這樣。你的下一個tableView將替換preViewView。你應該通過初始化四個單表來實現這一點。

0

放在for循環,你要創建

DetailsTable.tag=i 

,然後例如委託方法的編輯方法的使用

- (void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    switch (tableView.tag) 
    { 
     case 0: 
     { 
      //write your code here 
      break; 
     } 
     // like this do all for other remaining tableview 
     default: 
      break; 
    } 
}