1

TableViewとSearchDisplayControllerを備えたXcodeのマスター/詳細アプリケーションがあります。
TableViewには、10個のエントリを持つNSArrayがあります。
検索バーを使用すると、クリックしたエントリが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 に答える