我在Xcode中有一个带有TableView和SearchDisplayController的Master-Detail Applicaton。
在TableView中,我有一个包含10个条目的NSArray
如果我使用搜索栏,DetailView会正确显示我点击的条目
但是,如果我不使用搜索栏并在条目上单击TableView,则每次都会向我显示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时,我都不知道如何修复它:(
- (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];
}
}
}
答案 0 :(得分:0)
当您单击不属于searchDisplayController的tableView的单元格时,您似乎没有执行任何操作,因此请尝试将tableView:didSelectRowAtIndexPath:方法更改为
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"showDetail" sender:self];
}