我有一個UITableView
顯示來自plist文件的數據。對於這個表格視圖,我簡單地從plist文件的內容中提取NSArray
並將數據輸入到每個單元格中。但是當一個單元被點擊時,我需要下一個表視圖控制器來知道被點擊的單元格的索引路徑,以便這個視圖控制器知道數組中的哪個項目要顯示細節。我嘗試以下方法:在UITableViews之間傳遞NSIndexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
staffDetailView = [[StaffDetailViewController alloc] init];
[staffDetailView setSelectedIndexPath:indexPath];
[self performSegueWithIdentifier:@"pushStaffDetailView" sender:self];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
以上,我試圖抽頭單元的索引路徑傳遞給我在新的視圖控制器創建的NSIndexPath
對象。
下表視圖控制器的頭文件:
@interface StaffDetailViewController : UITableViewController {
NSIndexPath *selectedIndexPath;
NSArray *staffArray;
}
@property (nonatomic, retain) NSIndexPath *selectedIndexPath;
@property (nonatomic, strong) NSArray *staffArray;
在這裏,我定義在前面視圖控制器設定的selectedIndexPath
對象。
但是,當我嘗試訪問selectedIndexPath
對象以顯示相關數據,對象似乎是nil
:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSString *header;
if (section == 0) {
NSString *name = [[staffArray objectAtIndex:selectedIndexPath.row] objectForKey:@"Staff Member"];
NSArray *splitStaffArray = [name componentsSeparatedByString:@", "];
NSString *lastName = [splitStaffArray objectAtIndex:0];
NSString *firstName = [splitStaffArray objectAtIndex:1];
NSString *consolidatedName = [NSString stringWithFormat:@"%@ %@", firstName, lastName];
NSString *assignment = [[staffArray objectAtIndex:selectedIndexPath.row] objectForKey:@"Assignment"];
header = [NSString stringWithFormat:@"%@\n%@", consolidatedName, assignment];
return header;
}
return nil;
}
上午我訪問selectedIndexPath
對象不正確?有沒有一種優越的方法將正確的索引路徑傳遞給下一個視圖控制器?
爲什麼不簡單地轉發對象實例而不是它的indexPath? – Till 2012-02-20 19:01:54
我有多個實例要顯示的對象,我認爲出於效率考慮,最好只傳遞索引路徑並讓下一個視圖控制器負責檢索數據。不過,我會再試一次。 – 2012-02-20 19:04:02
採取該方法返回null。 – 2012-02-20 19:07:44