我正在尝试从 UITableView 列表中调用详细信息屏幕 - 但未在接收 View 中调用委托(delegate) - 我将发布所有代码:
列出头文件:
#import <UIKit/UIKit.h>
#import "tank.h"
@class iTanksV2ListViewController;
@protocol iTanksV2ListViewControllerDelegate
- (void) iTanksListViewControlleriTanksV2ListViewController *) sender choseTanktank *)tank;
@end
@interface iTanksV2ListViewController : UITableViewController
@property (nonatomic, strong) NSArray *tanks;
@property (weak, nonatomic) IBOutlet UITableView *tankTableView;
@property (weak, nonatomic) id <iTanksV2ListViewControllerDelegate> delegate;
@end
和m文件:
#import "iTanksV2ListViewController.h"
#import "tank.h"
#import "tankDetailViewController.h"
@interface iTanksV2ListViewController ()
@end
@implementation iTanksV2ListViewController
@synthesize tanks = _tanks;
@synthesize tankTableView = _tankTableView;
@synthesize delegate = _delegate;
- (id)initWithStyleUITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
- (void)viewDidUnload
{
[self setTankTableView:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientationUIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableViewUITableView *)tableView
{
// Return the number of sections.
return 1;//keep this section in case we do need to add sections in the future.
}
- (NSInteger)tableViewUITableView *)tableView numberOfRowsInSectionNSInteger)section
{
// Return the number of rows in the section.
return [self.tanks count];
}
- (UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Tank List Table Cell";
UITableViewCell *cell = [self.tankTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell)
{
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero];
}
tank *thisTank = [self.tanks objectAtIndex:indexPath.row];
cell.textLabel.text = thisTank.tankNumber;
return cell;
}
-(void) prepareForSegueUIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString"Show Tank Details"])
{
}
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
tank *thisTank = [self.tanks objectAtIndex:indexPath.row];
[self.delegate iTanksListViewController:self choseTank:thisTank];
}
@end
以及接收文件的头部:
#import <UIKit/UIKit.h>
#import "tankGauge.h"
#import "tank.h"
@interface tankDetailViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *tankNumberLabel;
@property (weak, nonatomic) IBOutlet UILabel *tankProductLabel;
@property (weak, nonatomic) IBOutlet UILabel *tankAvailableProductLabel;
@property (weak, nonatomic) IBOutlet UILabel *tankMaxVolumeLabel;
@property (weak, nonatomic) IBOutlet tankGauge *tankVolumeGauge;
@property (weak, nonatomic) tank* tankToShow;
@end
...和m文件:
#import "tankDetailViewController.h"
#import "iTanksV2ListViewController.h"
@interface tankDetailViewController () <iTanksV2ListViewControllerDelegate>
@end
@implementation tankDetailViewController
@synthesize tankNumberLabel = _tankNumberLabel;
@synthesize tankProductLabel = _tankProductLabel;
@synthesize tankAvailableProductLabel = _tankAvailableProductLabel;
@synthesize tankMaxVolumeLabel = _tankMaxVolumeLabel;
@synthesize tankVolumeGauge = _tankVolumeGauge;
@synthesize tankToShow = _tankToShow;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
-(void)iTanksListViewController:(iTanksV2ListViewController *)sender choseTank:(id)tank
{
self.tankToShow = tank;
self.tankNumberLabel.text = self.tankToShow.tankNumber;
}
- (void)viewDidUnload
{
[self setTankNumberLabel:nil];
[self setTankProductLabel:nil];
[self setTankAvailableProductLabel:nil];
[self setTankMaxVolumeLabel:nil];
[self setTankVolumeGauge:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
Best Answer-推荐答案 strong>
tankTableView 是一个 IBOutlet ,因此您只需在 中将 tableView 的委托(delegate)和数据源连接到您的 File's Owner >xib 如下图:
关于ios - UITableViewDelegate 没有被调用,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/9869769/
|