2014-03-07 67 views
0

我現在堅持如何創建我的UITableView。現在它可以正常工作,1個對象爲它的行和單元格提供數據。問題是,我有第二個對象,我也想在表視圖中使用。通常,這非常簡單,我只需在UITableView中創建2個部分,併爲第一部分使用一個對象,並在第二部分使用第二個對象。使用2個不同的對象創建一個UITableView

但是對於這個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方法實現我可以只返回兩個對象的添加計數,但我不知道如何將第二個對象工作到代碼的其餘部分。

+0

我建議你寫在你的2個數據源的包裝,它隱藏了複雜的'UITableView'也是一個'UITableView DataSource'。如果您要求,該包裝必須處理所有更改並提供正確的對象。 –

+1

爲什麼不只是添加這兩個數組? 'self.allMessages = [messages arrayByAddingObjectsFromArray:messages2];' – DrummerB

回答

1

爲什麼不創建一個NSArray結合兩個msg陣列?如果你是填充從什麼地方你的第二個味精陣列,只是等待,直到裝載完成,然後執行:

NSArray *bothArray = [msg1 arrayByAddingObjectsFromArray:msg2]; 

您可以使用bothArraydatasourceTableView,當你只有一個填充msg陣列,bothArray將剛剛從msg1,當你已經填充msg2的元素,只要使用上面的代碼,然後調用:

[self.tableView reloadData]; 
+0

謝謝你的工作完美。 – user3344977

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]; 
    } 
} 
相關問題