我正在尝试使用情节提要将 UITableViewController 连接到 UIView。我有一个 TabBarController 连接到显示 UITableViewController 的导航控制器,显示一个小数组。我想单击一行并触发一个带有标签的简单 UIView,该标签仍显示在 UINavigationController 中,因此我可以导航回 UITableViewController
我可以让 UITableViewController 用数组显示 OK,但是当我选择它时我无法让行触发。
这是我的 UITableViewController (AtoZController.m) 文件:
#import "AtoZController.h"
#import "StoreDetailsView.h"
@interface AtoZController ()
@end
@implementation AtoZController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = NSLocalizedString(@"A to Z", @"An A to Z List of Stores");
AtoZArray = [[NSMutableArray alloc] init];
[AtoZArray addObject:@"Apple"];
[AtoZArray addObject:@"Boots"];
[AtoZArray addObject:@"Topman"];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [AtoZArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
NSInteger row = [indexPath row];
cell.textLabel.text = [AtoZArray objectAtIndex:row];
return cell;
}
我从 UITableViewController 到 UIView 连接了一个名为 storeDetailsSegue 的 segue。我正在尝试使用 prepareForSeque 方法来触发下一个视图,但对以下代码没有运气。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
StoreDetailsView *detail = [self detailForIndexPath:path];
[segue.destinationViewController setDetail:detail];
}
正如它一直说的那样,有一个错误,因为“AtoZController 声明选择器'detailForIndexPath'”没有可见的@interface。我可能做错了什么,因为我以前从未使用过故事板。我想要的是一个简单的 UIView 显示一个标签,该标签动态更改以显示已选择的行号。
我不知道 UITableViewController 实际上是否应该是 UITableView 但由于我从未使用过 segue 或故事板,我不知道是什么导致了问题。
任何建议都将不胜感激。
更新:
所以我设法让 UIViewController 显示,但在显示视图之前仍然无法更新标签。