簡體   English   中英

iOS:未調用didSelectRowAtIndexPath

[英]iOS: didSelectRowAtIndexPath not being called

我在viewController有兩個UITableView 兩者都有不同的標簽。 標簽為0的UITableview是可編輯的,標簽1為不可編輯。我的問題是當UITableview中的標簽為1的選擇行不被調用時。 但是當我滑動didSelectRowAtIndexPath被標記為1。

這是我的代碼,

    - (BOOL) tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
    {
            if (tableView.tag == 0) {
                return YES;
            }
            else if (tableView.tag == 1)
            {
                return NO;
            }
        return NO;
    }


- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView.tag == 0)
    {
    if (editingStyle == UITableViewCellEditingStyleDelete)
       {
           //My stuff
       }
    }
    else editingStyle = UITableViewCellEditingStyleNone;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView.tag == 1)
    {
        switch (indexPath.row)
        {
            case 0:
                [self.navigationController popToRootViewControllerAnimated:YES];
                break;
            case 1:
                [self performSegueWithIdentifier:@"mapPageSegue" sender:nil];
                break;
            case 2:
                [self closeMenuTable];
                [self  listenMusic];
                break;
            default:
                break;
        }
    }
}

根據您的評論,我猜您沒有設置UITableViewDelegate因為tableView:didSelectRowAtIndexPath:是該協議的一種方法。

無論如何,我會設置一個斷點並進行調試。 這是解決問題的正確方法。

另外,我將不依賴於tag s,而將依賴於兩個表的引用(通過IB出口,屬性或ivars)。 例如。

if(tableView == self.myFirstTable) {
    // do stuff here
} else {
    // do other stuff here
} 

暫無
暫無

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

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