2011-06-20 3 views
3

私は私のUITableViewでより多くのセクションを作成しようとしていますが、わかりません。私は "完全なウェブサイトを表示"リンクを自分のセクションに移動し、それらのセルの高さを75に変更したいと考えています。新しいセルを作成することはできますが、正しく配置する方法を見つけることはできません。ここでiPhone UITableViewセクションを作成

typedef enum { SectionHeader, SectionDetail } Sections; 
    typedef enum { SectionHeaderTitle, SectionHeaderDate, SectionHeaderURL,   SectionHeaderEnclosure } HeaderRows; 
    typedef enum { SectionDetailSummary } DetailRows; 

    @implementation MediaDetailTableViewController 

    @synthesize item, dateString, summaryString, teachings; 

    #pragma mark - 
    #pragma mark Initialization 

    - (id)initWithStyle:(UITableViewStyle)style { 
    if ((self = [super initWithStyle:style])) { 

    } 
    return self; 
    } 

    #pragma mark - 
    #pragma mark View lifecycle 

    - (void)viewDidLoad { 

    // Super 
    [super viewDidLoad]; 

    // Date 
    if (item.date) { 
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
     [formatter setDateStyle:NSDateFormatterMediumStyle]; 
     [formatter setTimeStyle:NSDateFormatterMediumStyle]; 
     self.dateString = [formatter stringFromDate:item.date]; 
     [formatter release];} 
    // Summary 
    if (item.summary) { 
     self.summaryString = [item.summary stringByConvertingHTMLToPlainText]; 
    } else { 
     self.summaryString = @"[No Summary]"; 
     } 
     } 

    #pragma mark - 
    #pragma mark Table view data source 

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    // Return the number of sections. 
    return 2; 
    } 


    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    // Return the number of rows in the section. 
    switch (section) { 
     case 0: return 4; 
     default: return 1; 
    } 
     } 

    // Customize the appearance of table view cells. 
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    // Get cell 
    static NSString *CellIdentifier = @"CellA"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 

    // Display 
    cell.textLabel.textColor = [UIColor blackColor]; 
    cell.textLabel.font = [UIFont systemFontOfSize:15]; 
    if (item) { 

     // Item Info 
     NSString *itemTitle = item.title ? [item.title stringByConvertingHTMLToPlainText] : @"[No Title]"; 

     // Display 
     switch (indexPath.section) { 
      case SectionHeader: { 

       // Header 
       switch (indexPath.row) { 
        case SectionHeaderTitle: 
         cell.textLabel.font = [UIFont boldSystemFontOfSize:15]; 
         cell.textLabel.text = itemTitle; 
         break; 
        case SectionHeaderDate: 
         cell.textLabel.text = dateString ? dateString : @"[No Date]"; 
         break; 
        case SectionHeaderURL: 
         cell.textLabel.text = @"View Full Website"; 
         cell.textLabel.textColor = [UIColor blackColor]; 
         cell.selectionStyle = UITableViewCellSelectionStyleBlue; 
         cell.imageView.image = [UIImage imageNamed:@"Safari.png"]; 
         break; 
        case SectionHeaderEnclosure: 
         cell.textLabel.text = @"Video"; 
         cell.textLabel.textColor = [UIColor blackColor]; 
         cell.selectionStyle = UITableViewCellSelectionStyleBlue; 
         cell.imageView.image = [UIImage imageNamed:@"Video.png"]; 
         break; 
       } 
       break; 

      } 
      case SectionDetail: { 

       // Summary 
       cell.textLabel.text = summaryString; 
       cell.textLabel.numberOfLines = 0; // Multiline 
       break; 

      } 
     } 
    } 

    return cell; 

} 

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (indexPath.section == SectionHeader) { 

     // Regular 
     return 34; 

    } else { 

     // Get height of summary 
     NSString *summary = @"[No Summary]"; 
     if (summaryString) summary = summaryString; 
     CGSize s = [summary sizeWithFont:[UIFont systemFontOfSize:15] 
         constrainedToSize:CGSizeMake(self.view.bounds.size.width - 40, MAXFLOAT) // - 40 For cell padding 
          lineBreakMode:UILineBreakModeWordWrap]; 
     return s.height + 16; // Add padding 

    } 
    } 

    #pragma mark - 
    #pragma mark Table view delegate 

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    // Open URL 
    if (indexPath.section == SectionHeader && indexPath.row == SectionHeaderURL) { 
     if (item.link) { 
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:item.link]]; 
     } 
    } 

    if (indexPath.section == SectionHeader && indexPath.row == SectionHeaderEnclosure) { 
     if (item.enclosures) { 
      for (NSDictionary *dict in item.enclosures){ 

       NSString *baseUrl = @"http://www.calvaryccm.com"; 
       NSString *url = [dict objectForKey:@"url"]; 
       NSString *finalURL; 
       finalURL = [baseUrl stringByAppendingFormat:url]; 
       NSLog(@" finalUrl is : %@",finalURL); 
       NSLog(@" Url is : %@",url); 

       MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:finalURL]]; 


       // Register to receive a notification when the movie has finished playing. 
       //[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer]; 

       if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) { 
        // Use the 3.2 style API 
        moviePlayer.controlStyle = MPMovieControlStyleDefault; 
        moviePlayer.shouldAutoplay = YES; 
        [self.view addSubview:moviePlayer.view]; 
        [moviePlayer setFullscreen:YES animated:YES]; 
       } else { 
        // Use the 2.0 style API 
        moviePlayer.movieControlMode = MPMovieControlModeHidden; 
        [moviePlayer play]; 
       }   
      } 
     } 
    } 

    // Deselect 
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    } 

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    { 
    // Return YES for supported orientations 
    return YES; 
    } 


    #pragma mark - 
    #pragma mark Memory management 

    - (void)dealloc { 
    [dateString release]; 
    [summaryString release]; 
    [item release]; 
    [teachings release]; 
    [super dealloc]; 
    } 


    @end 

は参照用の画像です:

Moving tableview sections

は、すべてのあなたの助けをありがとう!

答えて

10

まず、UITableViewのデータソースで適切なメソッドを変更してください。あなたはこのような何かにそれを変更する必要があります。コードから

、:

typedef enum { SectionHeader, SectionMiddle, SectionDetail } Sections; 

#pragma mark - 
#pragma mark Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    // Return the number of sections. 
    return 3; 
} 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    // Return the number of rows in the section. 
    switch (section) { 
     case 0: return 2; 
     case 1: return 2; 
     default: return 1; 
    } 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    // snip 
    switch (indexPath.section) { 
     case SectionHeader: 
      // snip 
      break; 
     case SectionMiddle: 
      // snip 
      break; 
     case SectionDetail: 
      // snip 
      break; 
    } 
} 
+0

ありがとうございます!あなたのコードは素晴らしい助けでした! –

0

使用

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
// Return the number of sections. 
return 3; 
} 
関連する問題