如何将NSObject数组绑定到UITableView?

时间:2011-11-27 03:58:19

标签: objective-c cocoa-touch uitableview

我是Objective-C和Xcode的新手,并且希望有人能够在基本的编程问题上给我一些帮助。

我希望将 TranslationRegions (自定义数据模型)添加到堆栈并调用它以在控制器中使用。

数组应为:

  1. 应用启动时加载
  2. 可在应用程序的任何位置随时致电
  3. 最终,数组项目将通过调用Web服务加载,但是现在我想通过代码在我的模型中加载项目。

    我创建了一个带有.h和.m文件的对象(TranslationRegion),我希望用它来绑定一个表。

    我可能会在这里发生严重错误,所以任何建议都会受到赞赏。

    翻译区域目前只有一个属性descriptionOfRegion。

    我首先包含了我的控制器,以显示我正在尝试做的事情,然后是我的模型的.h和.m文件。

    实际控制器

    - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
        {
            if ([segue.identifier isEqualToString:@"Show Regions"])
            {
                // Need to instantiate the array in here and pass it to the 'setRegions' within the Table View Controller
                //[segue.destinationViewController setRegions:regionArray];
            }
        }
    

    表视图控制器

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *CellIdentifier = @"MyApp Regions";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    
    // Configure the region cell
    id region = [self.regions objectAtIndex:indexPath.row];
    cell.textLabel.text = [@"" stringByAppendingString:[TranslationRegion descriptionOfRegion:region]];
    
    return cell;
    }
    

    TranslationRegion.h

    #import <Foundation/Foundation.h>
    
    @interface TranslationRegion : NSObject
    
    @property (nonatomic, readonly) id region;
    
    + (NSString *)descriptionOfRegion:(id)region;
    
    @end
    

    TranslationRegion.m

    #import "TranslationRegion.h"
    
    @interface TranslationRegion()
      @property (nonatomic, strong) NSMutableArray *regionStack;
    @end
    
    @implementation TranslationRegion
    
    @synthesize regionStack = _regionStack;
    
    - (NSMutableArray *)regionStack
    {
        if (_regionStack == nil) _regionStack = [[NSMutableArray alloc] init];
        return _regionStack;
    }
    
    - (id)region
    {
        return [self.regionStack copy];
    }
    
    + (NSString *)descriptionOfRegion:(id)region
    {
        return @"This value";
    }
    
    @end
    

1 个答案:

答案 0 :(得分:2)

您的表视图控制器至少需要实现

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

可能

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

同样,表视图知道要求的单元格数。