我有一个表格视图,在IB中创建了一个添加的标题视图,用于在表格上方显示一些文本(无法发布屏幕截图 - http://i51.tinypic.com/2przbl5.jpg)。我想根据我的plist加载表格上方的文本,我使用objectforkey加载文本。但是当我连接IB中的插座时,文本消失了。这在标准的UIview中工作,所以我不确定在表视图中我缺少什么。我是新手编码所以也许有更好的方法来做这个或我做错了什么?感谢。
.h file _________________________________________________
#import <UIKit/UIKit.h>
@interface TourOverviewController : UITableViewController {
NSArray *points;
NSDictionary *tour;
IBOutlet UITextField *nameTextField;
IBOutlet UITextView *pointsTextView;
}
@property (nonatomic, retain) NSArray *points;
@property (nonatomic, retain) NSDictionary *tour;
@property (nonatomic, retain) UITextField *nameTextField;
@property (nonatomic, retain) UITextView *pointsTextView;
@end
.m file______________________________________________________
#import "TourOverviewController.h"
#import "LoadingNames.h"
@implementation TourOverviewController
@synthesize points, tour, nameTextField, pointsTextView,
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
nameTextField.text = [tour objectForKey:NAME_KEY];
pointsTextView.text = [tour objectForKey:DIRECTIONS_KEY];
}
- (void)viewDidLoad {
NSArray *array = [[NSArray alloc] initWithObjects:@"Toy Story",
@"A Bug's Life", @"Toy Story 2", @"Monsters, Inc.",
@"Finding Nemo", @"The Incredibles", @"Cars",
@"Ratatouille", @"WALL-E", nil];
self.points = array;
[array release];
[super viewDidLoad];
}
- (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 [points count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
NSUInteger row = [indexPath row];
NSString *rowString = [points objectAtIndex:row];
cell.textLabel.text = rowString;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
[rowString release];
return cell;
}
@end
答案 0 :(得分:0)
我不确定我理解你的问题,但你可以创建2个plist,points和tour,然后用plist的内容填充你的Mutable数组和字典。
编辑*的 * ** * ** * ** * ** * ** * ** * ** * ** * ** 强>
我以前错过了这个,但也许就像添加@“”那样简单。
[tour objectForKey:@"NAME_KEY"];
如果您想因任何原因更改其中的数据,您应该使您的数组和字典可变。
以下是获取plist并填充数组或字典的代码(确保在填充时将plists设置为适当的类型)
将它放在viewDidLoad方法
中NSString *pointsList = [[NSBundle mainBundle]
pathForResource:@"points" ofType:@"plist"];
points = [[NSMutableArray alloc]initWithContentsOfFile: pointsList];
NSString *tourList = [[NSBundle mainBundle]
pathForResource:@"tour" ofType:@"plist"];
tour = [[NSMutableArray alloc]initWithContentsOfFile: tourList];
然后你的数组和字典填充了plist的内容。
希望这会有所帮助,也许我误解了你想要做什么。
答案 1 :(得分:0)
通常在使用UITableViewController时,您尝试显示的文本必须放在表头中。 以下是如何向表头添加标签:
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,300,100)];
UILabel *header = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 50)];
[header setTextColor:[UIColor redColor]];
[header setText:@"Some Text"];
[headerView addSubview:header];
[self.tableView setTableHeaderView:headerView];