Я создал список шрифтов через tableView, и когда пользователь вкладки любой из ячеек, строка шрифта должна быть изменена согласно ячейкам, но я не знаю, почему мой код не работает!
мое табличное представление открывается с UIPopOverViewContoller: вот мой код:
.h
@interface FontViewController : UITableViewController <UITableViewDelegate , UITableViewDataSource , UINavigationControllerDelegate> {
NSMutableArray *listOfFonts;
}
@property (nonatomic, retain) NSMutableArray *listOfFonts;
.м
#import "FontViewController.h"
#import "xxxAppDelegate.h"
#import "xxxViewController.h"
@implementation FontViewController
- (void)viewDidLoad
{
listOfFonts = [[NSMutableArray alloc] init];
[listOfFonts addObject:@"font1"];
[listOfFonts addObject:@"font2"];
[listOfFonts addObject:@"font3"];
[listOfFonts addObject:@"font4"];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//TableView Codes ....
cell.textLabel.text = [listOfFonts objectAtIndex:indexPath.row];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
xxxAppDelegate *appDelegate =
[[UIApplication sharedApplication] delegate];
appDelegate.viewController.detailItem = [listOfFonts objectAtIndex:indexPath.row];
}
xxxViewController.h:
@interface {
NSString *fontString;
id detailItem;
}
@property (nonatomic ,retain) NSString *fontString;
@property (nonatomic, retain) id detailItem;
xxxViewController.m:
@synthesize detailItem ,fontString;
- (void)setDetailItem:(id)newDetailItem {
if (detailItem != newDetailItem) {
[detailItem release];
detailItem = [newDetailItem retain];
//---update the view---
fontString = [detailItem description];
}
}
//here is the custom font codes : (I am using special fonts which does not works with UIApplicationFont in app plist)
(CTFontRef)newCustomFontWithName:(NSString *)fontName
ofType:(NSString *)type
attributes:(NSDictionary *)attributes
{
// the string of cell should be equal to the pathForResource:fontString for example font1 , font 2 ...
NSString *fontPath = [[NSBundle mainBundle] pathForResource:fontString = [detailItem description] ofType:@"ttf"];
NSData *data = [[NSData alloc] initWithContentsOfFile:fontPath];
CGDataProviderRef fontProvider = CGDataProviderCreateWithCFData((CFDataRef)data);
[data release];
/// blah alah blah
}
Вот сообщения отладчика в setDetailItem
NSLog(@"fontString: %@, assigned: %@ in controller: %@", fontString, [detailItem description], self);
2011-10-02 23:12:57.036 Medad[558:10d03] fontString: (null), assigned: font1 in controller: < myAppViewController: 0x7078a30>
2011-10-02 23:12:58.015 Medad[558:10d03] fontString: (null), assigned: font2 in controller: < myAppViewController: 0x7078a30>
2011-10-02 23:12:58.475 Medad[558:10d03] fontString: (null), assigned: font3 in controller: < myAppViewController: 0x7078a30>
2011-10-02 23:13:00.365 Medad[558:10d03] fontString: (null), assigned: font4 in controller: < myAppViewController: 0x7078a30>
Моя проблема в этой строке:
fontString это должно быть изменено при выборе ячейки ...
NSString *fontPath = [[NSBundle mainBundle] pathForResource:???fontString????? ofType:@"ttf"];
Буду благодарен, если кто-нибудь поможет мне, спасибо