使用2个不同的对象创建UITableView

时间:2014-03-07 00:09:24

标签: ios iphone objective-c uitableview

我现在被困在如何创建我的UITableView。现在它可以很好地使用1个对象为它的行和单元格提供数据。问题是,我有一个第二个对象,我也想在表视图中使用。通常,这很容易,我只是在UITableView中创建了2个部分,第一部分使用了一个对象,第二部分使用了第二个对象。

但对于这个UITableView,我只想使用1节。我需要以编程的方式用对象的两个文本填充行和单元格。我不知道怎么做,虽然只使用1节。

以下是我帮助创建UITableView的所有方法实现:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {


     return 1 ;

}


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


    return [self.messages count];

}


- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {


    return @"Inbox Messages";


}



-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    static NSString *cellIdentifier = @"SettingsCell";

    UITableViewCell  *cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];


    PFObject *message = [self.messages objectAtIndex:indexPath.row];


    UIImage *selectMessageButtonImage = [UIImage imageNamed:@"SliderThumb-Normal-G"];


    UIImage *selectMessageButtonImageHighlighted = [UIImage imageNamed:@"SliderThumb-Normal"];



    UIButton *openMessageButton = [[UIButton alloc]init];

    openMessageButton.frame = CGRectMake(237, -10, 64, 64);

    [openMessageButton setImage:selectMessageButtonImage forState:UIControlStateNormal];
    [openMessageButton setImage:selectMessageButtonImageHighlighted forState:UIControlStateHighlighted];
    [openMessageButton setImage:selectMessageButtonImageHighlighted forState:UIControlStateSelected];

    [openMessageButton addTarget:self action:@selector(handleTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];



    openMessageButton.tag = indexPath.row;


    [cell.textLabel setText:[message objectForKey:@"senderName"]];

    NSString *fileType = [message objectForKey:@"fileType"];

    if([fileType isEqualToString:@"image"]) {


        cell.imageView.image = [UIImage imageNamed:@"icon_image"];


    } else {

        //no image
    }

    [cell.detailTextLabel setText:@""];

    [cell.contentView addSubview:openMessageButton];


    return cell;

}

我目前使用此UITableView的对象称为message。我想创建一个名为message2的第二个对象,并将它的数据放在UITableView中。

我意识到对于numberOfRowsInSection方法实现,我只能返回两个对象的添加计数,但我不知道如何将第二个对象用于其余代码。

2 个答案:

答案 0 :(得分:1)

为什么不组合两个NSArray数组的msg?如果从某个地方填充第二个msg数组,只需等到加载完成后再执行:

NSArray *bothArray = [msg1 arrayByAddingObjectsFromArray:msg2];

bothArray可以使用datasource作为TableView的{​​{1}},当只有一个填充的msg数组时,bothArray将只是来自{{1}的元素},当您填充msg1时,只需使用上面的代码,然后调用:

msg2

答案 1 :(得分:0)

假设您有2个对象的2个数组:

NSArray *msg1;
NSArray *msg2;
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {


    return msg1.count + msg2.count;

}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   int msg1Count = msg1.count;
   if(indexPath.row < msg1Count)
   { 
      //Here you handle object1
      PFObject *currentObject = msg1[indexPath.row];
   }
   else
    {
       //Here you handle object 2
        PFObject *currentObject = msg2[indexPath.row - msg1Count];
     }
 }