Resolved Table View Cell Text Help

Discussion in 'iOS Programming' started by iphonedude2008, Dec 4, 2012.

  1. iphonedude2008, Dec 4, 2012
    Last edited: Dec 6, 2012

    iphonedude2008 macrumors 65816

    iphonedude2008

    Joined:
    Nov 7, 2009
    Location:
    Irvine, CA
    #1
    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
    
    
    implementation file
    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
    
    
     
  2. Reason077 macrumors 68000

    Reason077

    Joined:
    Aug 14, 2007
    #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;
     
  3. iphonedude2008 thread starter macrumors 65816

    iphonedude2008

    Joined:
    Nov 7, 2009
    Location:
    Irvine, CA
  4. MattInOz macrumors 68030

    MattInOz

    Joined:
    Jan 19, 2006
    Location:
    Sydney
    #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.
     

Share This Page