我是iPhone开发的新手。我已经创建了UITableView
。我已将所有内容连接起来并包含delegate
和datasource
。但是,我不想使用UITableViewCellAccessoryDetailClosureButton
添加详细视图附件,而是要点击UITableViewCell
,它应该会引导另一个视图,其中包含有关UITableViewCell
的更多详细信息。
我的视图控制器看起来像这样:
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>{
NSArray *tableItems;
NSArray *images;
}
@property (nonatomic,retain) NSArray *tableItems;
@property (nonatomic,retain) NSArray *images;
@end
ViewController.m
#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface ViewController ()
@end
@implementation ViewController
@synthesize tableItems,images;
- (void)viewDidLoad
{
[super viewDidLoad];
tableItems = [[NSArray alloc] initWithObjects:@"Item1",@"Item2",@"Item3",nil];
images = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"clock.png"],[UIImage imageNamed:@"eye.png"],[UIImage imageNamed:@"target.png"],nil];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return tableItems.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//Step 1:Check whether if we can reuse a cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
//If there are no new cells to reuse,create a new one
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:@"cell"];
UIView *v = [[UIView alloc] init];
v.backgroundColor = [UIColor redColor];
cell.selectedBackgroundView = v;
//changing the radius of the corners
//cell.layer.cornerRadius = 10;
}
//Set the image in the row
cell.imageView.image = [images objectAtIndex:indexPath.row];
//Step 3: Set the cell text content
cell.textLabel.text = [tableItems objectAtIndex:indexPath.row];
//Step 4: Return the row
return cell;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
cell.backgroundColor = [ UIColor greenColor];
}
@end
需要一些指导..谢谢..如果这是一个愚蠢的问题,请原谅我。
答案 0 :(得分:2)
您应该在UIViewController中实现以下方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
<强> [实施例] 强>
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ExampleDataItem *dataItem = [_dataSource objectAtIndex:[indexPath row]];
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
detailViewController.dataSource = dataItem;
[self.navigationController pushViewController:detailViewController animated:YES];
}
希望有所帮助:)
答案 1 :(得分:0)
实施UITableViewDelegate方法- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
在方法中,只需添加您的详细UIView
(假设您全局引用并在viewDidLoad:方法中分配此视图)到self.view
。根据{{1}更新详细视图的内容您可能还希望在详细视图上有一个“完成”按钮,可以用来返回到您的表格视图。
如果您的应用程序使用indexPath
,请使用detailViewController(类型为UINavigationViewController
)而不是UIViewController
,并使用以下命令将其推送到导航控制器:
UIView