簡體   English   中英

didSelectRowAtIndex不能正確更新

[英]didSelectRowAtIndex isn't updating properly

我有一個TableView,其中的行包含標題的屬性名稱。

這些屬性是在另一個TableView上定義的,可以在其中按“添加”將新創建的Object添加到First TableView。

如果我現在想編輯列表中的第二個Object,則必須按一下(切換到第二個TableView),再按Cancel,然后再按一次,以獲取正確的名稱。

didSelectRowAtIndex某些功能似乎無法正常工作,但我不知道它是什么。

這是我的方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.indexPathInt = (int)indexPath.row;
}

和:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:kSegueIdentifier]){

        AddEntry *controller = [[[segue destinationViewController] viewControllers] objectAtIndex:0];

        controller.delegate = self;
    }

    if ([[segue identifier] isEqualToString:kEditSegueIdentifier]) {

        edited = YES;

        AddEntry *controller = [[[segue destinationViewController] viewControllers] objectAtIndex:0];

        EntryObject *entry = self.entryObjectArray[self.indexPathInt];

        controller.name = entry.name;
        controller.someProperty = entry.soneProperty;


        controller.delegate = self;
    }
}

如果我登錄的indexPathIntPrepareforSegue方法是不一樣的indexPath.rowDidSelectRowAtIndex的方法,但一個我之前點擊。

因此indexPathInt不會及時更新。

是否有另一種方法可以用任何方法訪問選定的行而不將其發送到變量?

在設置self.indexPathInt之前,您可能正在調用[self performSegueWithIdentifier ...]。

如果您通過情節提要板執行Segue,那么您所要解釋的將完全發生。 設置self.indexPathInt之后,請切換為以編程方式調用[self performSegueWithIdentifier]

干杯。

如果您直接從該行中搜索,而不是從viewController中手動搜索,則prepareForSegue將在didSelectRowAtIndex路徑之前被調用。

編輯:

  • 將segue從ViewController拖到目標,而不是從ROW。

  • 像平時一樣命名segue

  • 在didSelectRowAtIndexPath中設置要設置的變量

  • 調用didSelectRowAtIndexPath AFTER之后設置變量:

    [self performSegueWithIdentifier:@“ yourSegueIdentifierString”發送者:self];

暫無
暫無

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

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