簡體   English   中英

通過UINavigationController將int變量傳遞給UITableView

[英]pass int variable to UITableView Through UINavigationController

我試圖通過UINavigationController將int變量傳遞給UITableView(我使用的是xcode 4.3),所以我創建了2個類(PartsTableViewController為“ UITableViewController”和PartsNavController為“ UINavigationController”),我想從當前的變量中傳遞變量類添加到PartsTableViewController,然后使用包含標題欄的導航控制器打開該表,因此我在當前類中編寫了以下代碼:

PartsNavController *partsNav = [self.storyboard instantiateViewControllerWithIdentifier:@"partsNav"];  
partsNav.groupId = myGroupp.bg_id;
[self presentModalViewController:partsNav animated:YES];

在我在viewDidLoad中編寫的PartsNavController類中:

PartsTableViewController *parts = [self.storyboard instantiateViewControllerWithIdentifier:@"Parts"];
parts.groupId = groupId;
[parts.tableView reloadData];

在我在viewDidLoad中編寫的PartsTableViewController中:

NSLog(@"This is group: %d", groupId);

但是在運行時,它會生成2次輸出,

This is group:1
This is group:0

第一次是我發送的值,第二次是0,我只想要我發送的值,而不是0我如何才能防止這種情況並獲得我發送的值?

在此處輸入圖片說明

我想不使用segue從(MaktabatyTableViewController)傳遞到(PartsTableViewController)

進行所需操作的更好方法是在現有UINavigationController中推送第二個TableViewController。 最簡單的方法是在StoryBoard中創建NavContr,而不是在TableViews中創建,並使用segue將其單元與領先的視圖控制器連接。 並且比下面的使用方法:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UIViewController *destViewController = segue.destinationViewController;
    destViewController.integerValue = value;
}

在此處輸入圖片說明

我想不使用segue從(MaktabatyTableViewController)傳遞到(PartsTableViewController)

您可以選擇(至少)兩種策略:

  1. 直接溝通:人們經常問如何在兩個對象之間進行溝通,並且幾乎總是將其中一個對象引用另一個對象(有時反之亦然)。 要向對象發送消息,您需要一個指向該對象的指針。 如果您有指點,那么如何進行交流就沒有什么神秘之處。 用這些術語進行思考可以幫助您對問題進行一些不同的思考:而不是直接的“我如何向該對象發送消息?” 您可以專注於兩個對象之間的關系。 每個人是如何創建的? 其中一個對象是另一個對象的父對象嗎? 是否有一些可以提供指針的公共父對象? 這些對象應該如何關聯(如果有的話)?

  2. 間接通信:有時,與其讓兩個對象直接通信,不如通過一些中間對象路由通信。 例如,您的MaktabatyTableViewController可能會向其委托發送一條消息,然后委托會將信息傳遞給PartsTableViewController 一個更通用的解決方案是使用通知: MaktabatyTableViewController可以發布一個供PartsTableViewController偵聽的通知。 在這種情況下,中間對象是通知中心。 無論哪種方式,您通過間接通信獲得的好處是,兩個對象都不必知道另一個。 這減少了兩個類之間的耦合,並使它們更加靈活和可重用。

從您的問題中可以看出,我建議使用通知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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