[英]Sharing data between iPhone tableviews?
我希望能夠在正在制作的應用程序的表視圖之間共享數據。 這樣做的原因是,我希望能夠告訴一個子視圖選擇了哪個表行,這樣我就不必做出一堆視圖,而我可以測試一下整數變量是什么。 我觀看了有關如何執行此操作的視頻教程,但他們沒有使用tableviews。 因此,當我嘗試這樣做時,它似乎沒有用。 我將應用程序委托用作保存該變量的“數據中心”,然后嘗試在didSelectRowAtIndexPath
方法中為變量分配值。 (按新視圖只是共享應用程序就可以正常工作)這是第一個表視圖的代碼,其中我將變量分配給了數字。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSUInteger row = [indexPath row];
ApplicationAppDelegate *appDelegate = (ApplicationAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.rowPicked = row;
SecondLevelViewController *nextController = [self.controllers objectAtIndex:row];
[self.navigationController pushViewController:nextController animated:YES];
}
在應用程序委托中,我執行了此操作,並將其合成為.m文件:
@property (nonatomic) NSInteger rowPicked;
以及我需要的其他NSIntegers。 有什么建議么? 如果您認為我做錯了完全可以,請提供具體說明或網站或視頻教程的鏈接來啟發我嗎? 謝謝你們!
這通常是我完成此操作的方式:
AppDelegate
。 列表和詳細信息的邏輯和模型數據應駐留在有意義的類中。 在這種情況下,我們將使用列表和詳細視圖控制器類本身。 UITableViewCell
控件。 在該子目錄中,我將創建一個包含“實體”或單元格顯示其信息所需的任何數據的ivar。 這可以是NSManagedObject
甚至是NSDictionary
。 UITableViewCell
上設置數據時,它會更新單元格出口以正確顯示它。 注意,我如何保持單元格如何完全包含在子類中的邏輯。 在整個應用程序中執行此類操作以提高代碼的清潔度和組織性很重要。 tableView:didSelectRowAtIndexPath
方法中,調用UITableView類的cellForRowAtIndexPath:
方法以返回所選的單元格。 然后,可以將其UITableViewCell
為UITableViewCell
子類,並獲取您先前設置的實體信息。 tableView:didSelectRowAtIndexPath:
方法中設置此變量,即在將詳細信息視圖推入堆棧之前。 希望這對您有所幫助!
看起來真的很糟。 最好將id<$YOUR_PROTOCOL> delegate
添加到SecondLevelViewcontroller
並設置nextController.delegate = self
。 協議看起來像
@protocol RowAccessProtocol
@optional
-(NSUInteger)selectedRow;
@end
您當前的tableViewController必須創建:
@protocol RowAccessProtocol;
@class FirstLevelTableViewController:UITableViewController<RowAccessProtocol>
…
@end
並實現:
…
-(NSUInteger)selectedRow{
return [self.tableView indexPathForSelectedRow].row;
}
在SecondLevelViewController中,您可以調用[self.delegate selectedRow]
來獲取選定的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.