1

我在 Xcode 中有一个主从应用程序,带有一个 TableView 和一个 SearchDisplayController。
在 TableView 我有一个 NSArray 有 10 个条目。
如果我使用搜索栏,DetailView 会正确显示我单击的条目。
但是,如果我不使用搜索栏并在 TableView 中单击一个条目,那么 DetailView 每次都会向我显示 TableView 的第一个条目。
我能做些什么来修复它?

MasterViewController.m:http: //i.imgur.com/ZS1Oe.png

MasterViewController.h:

#import <UIKit/UIKit.h>  
@interface DPMasterViewController : UITableViewController  
@property (nonatomic, strong) IBOutlet UITableView *tableView;  
@end  

DetailViewController.m:http: //i.imgur.com/AkVJ8.png

DetailViewController.h:

#import <UIKit/UIKit.h>  
@interface DPDetailViewController : UIViewController  
@property (strong, nonatomic) id detailItem;  
@property (strong, nonatomic) IBOutlet UILabel *detailDescriptionLabel;  
@end 

对不起,我使用了图片,但我认为您更容易检查。:)
我希望你能帮助我!
如果有什么遗漏,请告诉我。

编辑:

在此方法中,每次 indexPath.row = 0 时都在 else 之后。我不知道如何解决它:(

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showDetail"]) {
    DPDetailViewController *destViewController = segue.destinationViewController;

    NSIndexPath *indexPath = nil;

    if ([self.searchDisplayController isActive]) { 
        indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
        destViewController.detailItem = [searchItemList objectAtIndex:indexPath.row];
    } else {
        indexPath = [self.tableView indexPathForSelectedRow];
        destViewController.detailItem = [itemList objectAtIndex:indexPath.row];

    }
  }    
}
4

1 回答 1

0

当您单击不属于 searchDisplayController 的 tableView 的单元格时,您似乎没有执行任何操作,因此请尝试将您的 tableView:didSelectRowAtIndexPath: 方法更改为

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self performSegueWithIdentifier:@"showDetail" sender:self];
}
于 2012-07-17T20:10:56.947 回答