簡體   English   中英

在iPhone表視圖之間共享數據?

[英]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
  • 我將覆蓋該ivar的設置器,以便在UITableViewCell上設置數據時,它會更新單元格出口以正確顯示它。 注意,我如何保持單元格如何完全包含在子類中的邏輯。 在整個應用程序中執行此類操作以提高代碼的清潔度和組織性很重要。
  • 然后,在tableView:didSelectRowAtIndexPath方法中,調用UITableView類的cellForRowAtIndexPath:方法以返回所選的單元格。 然后,可以將其UITableViewCellUITableViewCell子類,並獲取您先前設置的實體信息。
  • 接下來,您需要在詳細視圖控制器中創建一個ivar。 您將需要在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM