'根本无法使用它!我有一个很好的简单类用于占用整个屏幕的TableView,但我决定把它切成两半,所以表只占用了屏幕的上半部分。这是我的代码:
这是TableSplitViewController.h
@interface TableSplitViewController : UIViewController
{
ChildrenTableViewController *firstController;
IBOutlet UITableView *firstTable;
}
这是TableSplitViewController.m:
- (void)viewDidLoad
{
[super viewDidLoad];
if (firstController == nil) {
firstController = [[ChildrenTableViewController alloc] init];
}
[firstTable setDataSource:firstController];
[firstTable setDelegate:firstController];
firstController.view = firstController.tableView;
}
这是ChildrenTableViewController.h:
@interface ChildrenTableViewController : UITableViewController
@property (nonatomic, strong) NSMutableArray *childname;
@end
这是ChildrenTableViewController.m:
@implementation ChildrenTableViewController
@synthesize childname;
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.childname = [[NSMutableArray alloc]
initWithObjects:@"Oliver",
@"Stuart",
@"Ross",
@"Alex", nil];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"ShowChildrenDetails"]) {
ChildrenDetailViewController *detailViewController = [segue destinationViewController];
NSIndexPath *myIndexPath = [self.tableView indexPathForSelectedRow];
detailViewController.childrenDetailModel = [[NSArray alloc]
initWithObjects: [self.childname objectAtIndex:[myIndexPath row]], nil];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (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 [self.childname count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"childrenTablecell";
ChildrenTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[ChildrenTableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
// Configure the cell..
cell.childname.text = [self.childname objectAtIndex:[indexPath row]];
return cell;
}
这是ChildrenTableViewCell.h:
@interface ChildrenTableViewCell : UITableViewCell
@property (nonatomic, strong) IBOutlet UILabel *childname;
@end
这是ChildrenTableViewCell.m:
@implementation ChildrenTableViewCell
@synthesize childname;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
这是故事板布局的打印屏幕。我附上了带有子名的标签,因此它应该打印出名称:
这是它运行的打印屏幕,奇怪的是它有4行,我可以选择它们,但标签没有打印出来:
![截图2] [2]
完全感谢您提供的所有帮助和支持。谢谢:))
[2] http://puu.sh/1USzX/512ede1328
感谢IOSDEV,我设法找出它为什么这样做。
cell.childname.text = [self.childname objectAtIndex:[indexPath row]];
NSLog(@"%@",[self.childname objectAtIndex:[indexPath row]]);
NSLog(@"%@",cell.childname.text);
这是我在我的代码中添加的内容。
这就是我得到的:
2013-01-30 15:33:52.465 TableViewStory[17509:907] Oliver
2013-01-30 15:33:52.467 TableViewStory[17509:907] (null)
2013-01-30 15:33:52.470 TableViewStory[17509:907] Stuart
2013-01-30 15:33:52.472 TableViewStory[17509:907] (null)
2013-01-30 15:33:52.473 TableViewStory[17509:907] Ross
2013-01-30 15:33:52.474 TableViewStory[17509:907] (null)
2013-01-30 15:33:52.476 TableViewStory[17509:907] Alex
2013-01-30 15:33:52.477 TableViewStory[17509:907] (null)
因为你可以看到cell.childname.text等于null,这就是文本没有出现的原因:P我不明白它为什么会这样。
答案 0 :(得分:0)
您应该在TableSplitViewController.m
中使用initWithStylefirstController = [[ChildrenTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
出于某种原因,当我没有使用它来初始化tableView时,我遇到了类似的问题。