|
|
#1 |
|
Table View Cell Text Help
I'm making my first app with table views and I am having trouble with the logic of it. I have a data source object with an array that contains various objects such as uiimage and nsurls pointing to word, pages, pdfs, ect. that are displayed by a uiwebview. However, before they are loaded, i want to show a table listing all the objects.
The problem is, i dont know how to display a name in the uilabel for each cell. I want the user to be able to edit the name also. heres the code for the model Code:
#import <Foundation/Foundation.h> @interface CQStorageModel : NSObject<NSCoding> @property (strong, nonatomic) NSMutableArray *dataSource; @property (strong, nonatomic) NSURL *savingUrl; @property (strong, nonatomic) NSURL *appSupportUrl; - (id) initWithDataSource; - (void) saveDataSource; - (void) addProject: (NSMutableArray *) arry withName: (NSString *) string; - (void) removeProjectAtIndex: (NSUInteger) index; - (void) addObject: (id<NSCoding>) object toProjectAtIndex: (NSUInteger) index; - (void) removeObjectAtIndex: (NSUInteger) index1 inProjectAtIndex: (NSUInteger) index2; - (id) loadObjectAtIndex: (NSUInteger) index1 inProjectAtIndex: (NSUInteger) index2; @end Code:
#import "CQStorageModel.h"
@implementation CQStorageModel
- (void) encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.dataSource forKey:@"dataSource"];
[aCoder encodeObject:self.savingUrl forKey:@"savingUrl"];
[aCoder encodeObject:self.appSupportUrl forKey:@"APUrl"];
}
- (id) initWithCoder:(NSCoder *)aDecoder {
self = [super init];
self.dataSource = [aDecoder decodeObjectForKey:@"dataSource"];
self.savingUrl = [aDecoder decodeObjectForKey:@"savingUrl"];
self.appSupportUrl = [aDecoder decodeObjectForKey:@"APUrl"];
return self;
}
- (id) initWithDataSource {
self = [super init];
if (self) {
NSFileManager *fm = [[NSFileManager alloc]init];
self.appSupportUrl = [fm URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
if (!self.appSupportUrl)
self.appSupportUrl = [fm URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil];
self.savingUrl = [self.appSupportUrl URLByAppendingPathComponent:@"CQStorageModel.cqstm"];
NSData *data = [[NSData alloc]initWithContentsOfURL:self.savingUrl];
if (data)
self = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
return self;
}
- (void) saveDataSource {
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self];
[data writeToURL:self.savingUrl atomically:NO];
}
- (void) addProject: (NSMutableArray *) arry withName: (NSString *) string {
[arry insertObject:string atIndex:0];
[self.dataSource addObject:arry];
}
- (void) removeProjectAtIndex:(NSUInteger)index {
[self.dataSource removeObjectAtIndex:index];
}
- (void) addObject:(id<NSCoding>)object toProjectAtIndex:(NSUInteger)index {
[[self.dataSource objectAtIndex:index] addObject:object];
}
- (void) removeObjectAtIndex:(NSUInteger)index1 inProjectAtIndex:(NSUInteger)index2 {
if (index1 != 0)
[[self.dataSource objectAtIndex:index2] removeObjectAtIndex:index1];
}
- (id) loadObjectAtIndex:(NSUInteger)index1 inProjectAtIndex:(NSUInteger)index2 {
id object = [[self.dataSource objectAtIndex:index2]objectAtIndex:index1];
return object;
}
@end
Last edited by iphonedude2008; Dec 6, 2012 at 09:09 PM. |
|
|
|
0
|
|
|
#2 |
|
Well, looks like you've got your storage sorted. Now you need to implement the UITableViewDataSource protocol. You could extend CQStorageModel to implement UITableViewDataSource directly, or you could create a new class which calls into your CQStorageModel.
The key methods you'll need to implement are: – tableView:numberOfRowsInSection: – tableView:cellForRowAtIndexPath: Then you need to pass your UITableViewDataSource object to the table view using: tableView.dataSource = myTableData; |
|
|
|
0
|
|
|
#3 |
|
Ok thank you. I will do that.
|
|
|
|
0
|
|
|
#4 |
|
Have a look on Apple's Developer site for a Sample project called Doc Interaction. It's chock full of of file/url handling goodness.
__________________
There is no such thing as "Collective Wisdom" [13" MacBookPro 2.7Ghz, 27"Al iMac i7, Black MacBook 13", iPhone 4, iPad] |
|
|
|
0
|
![]() |
|
«
Previous Thread
|
Next Thread
»
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
All times are GMT -5. The time now is 01:40 AM.






Linear Mode
