2015-01-09 1 views
1

У меня есть пользовательская ячейка для моего приложения TableView. TableViewController называется «BlogView». У моей пользовательской ячейки есть несколько кнопок на ней, одна из которых - кнопка совместного доступа. Я хочу представить UIActivityViewController, когда нажата одна из кнопок.Вызов ActivityViewController из пользовательской ячейки

В заголовке для моей пользовательской ячейки, у меня есть свойство:

@property (nonatomic, retain) BlogView *myViewController; 

В пользовательской ячейке, у меня есть для layoutSubview:

self.commentButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [self.commentButton addTarget:self action:@selector(didTapCommentButtonAction:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.commentButton setTitle:@"Share" forState:UIControlStateNormal]; 
    [self.commentButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
    [self.commentButton setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted]; 

Для didTapCommentButtonAction селектора у меня есть:

- (void)didTapCommentButtonAction:(id)sender 
{ 
    NSLog(@"CommentButtonTAPPED"); 
    Mail *mail = [[Mail alloc]init]; 
    NSString *html = self.prayerObject[@"Request"]; 
    NSString *thetitle = [self.prayerObject[@"Title"] stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; 
    NSString *thedate = self.prayerObject[@"dateMade"]; 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"MMM_dd_yyyy"]; 
    [dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
    NSDate *theNewDate1 = [dateFormat dateFromString:thedate]; 
    NSString *theNewDate = [dateFormat stringFromDate:theNewDate1]; 

    mail.thehtml = html; 
    self.nameofhtmlfile = [[[[@"http://www.iprayed4u.net/app/" stringByAppendingString:thetitle] stringByAppendingString:@"_"] stringByAppendingString:theNewDate] stringByAppendingString:@".html"]; 
    // Reminder *thereminder = [[Reminder alloc] init]; 
    //thereminder.thehtml = html; 
    //thereminder.thetitle = thetitle; 
    //thereminder.thedate = thedate; 

    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:@[mail]]; 


    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { 
     activityVC.excludedActivityTypes = @[ UIActivityTypePostToWeibo, 

               UIActivityTypeCopyToPasteboard, 

               UIActivityTypeAssignToContact, 
               UIActivityTypeMail, 
               UIActivityTypePrint 

               ]; 

    } 
    else { 

     activityVC.excludedActivityTypes = @[ UIActivityTypePostToWeibo, 

               UIActivityTypeCopyToPasteboard, 

               UIActivityTypeAssignToContact, 
               UIActivityTypeMail, 
               UIActivityTypePrint, 
               UIActivityTypeAirDrop 
               ]; 

    } 

    NSLog(@"Test"); 
     [self.myViewController presentViewController: activityVC animated: YES completion: nil]; 

    } 

В BlogView.m

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
         object:(PFObject *)object 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    Cell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[Cell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 
    self.theObject = object; 

    // Configure the cell to show todo item with a priority at the bottom 
    cell.profileName.text = object[@"Title"]; 
    cell.contentLabel.text = object[@"Request"]; 
    cell.firstName = object[@"FirstName"]; 
    cell.lastName = object[@"LastName"]; 
    cell.iostoken = object[@"DeviceID"]; 
    cell.request = object[@"Title"]; 
    cell.prayerObject = object; 
    PFFile *thumbnail = object[@"ProfilePic"]; 
    cell.profilePic.image = [UIImage imageNamed:@"[email protected]"]; 
    [thumbnail getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) { 

     UIImage *thumbnailImage = [UIImage imageWithData:imageData]; 
     UIImageView *thumbnailImageView = [[UIImageView alloc] initWithImage:thumbnailImage]; 

     cell.profilePic.image = thumbnailImage; 

    }]; 
    NSString *dates = object[@"dateMade"]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"MMM_dd_yyyy"]; 
    NSDate *datefromstring = [formatter dateFromString:dates]; 
    NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init]; 
    [formatter2 setDateFormat:@"MMM dd, yyyy"]; 
    cell.dateLabel.text = [formatter2 stringFromDate:datefromstring]; 
    UIFont *cellFont = [UIFont fontWithName:@"Verdana-Bold" size:15]; 
    UIFont *cellFont2 = [UIFont fontWithName:@"Verdana-Bold" size:12]; 



    return cell; 
} 

У меня нет предупреждений или ошибок, но когда я нажимаю на кнопку, ничего не происходит.

+0

Есть ли у вас какой-либо другой код? Я думаю, вам понадобится свойство для вашей кнопки внутри пользовательского класса ячеек. Тогда, возможно, вы можете добавить селектор к этой кнопке свойства. Внутри селекторного метода вы можете запустить ActivityViewController –

+0

. CurrentViewController находится внутри метода выбора, который вызывает кнопка, @JoshEngelsma – user717452

+0

Что такое myViewController и что такое avc? Вы создаете или получаете ссылку на любой из них? – rdelmar

ответ

2

Шаг один: получить IBOutlet от кнопки на ячейку в файл CustomCell.h ...

@property (weak, nonatomic) IBOutlet UIButton *commentButton; 

Шаг два: В cellForRowAtIndexPath, добавьте переключатель к кнопке на каждая клетка и одеть его, как вы хотите его ... УВЕДОМЛЕНИЕ мы добавляем селектор в каждой «ячейки кнопки» теперь ... не self.commentButton

[cell.commentButton addTarget:self action:@selector(didTapCommentButtonAction:) forControlEvents:UIControlEventTouchUpInside]; 
[cell.commentButton setTitle:@"Share" forState:UIControlStateNormal]; 
[cell.commentButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
[cell.commentButton setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted]; 

Шаг третий: реализовать метод выбора внутри файла BlogView.m, а не внутри CustomCell.m.

+0

Это сделало это. Я все еще новичок в пользовательских ячейках и накладываю на них кнопки, так что это заводило меня с ума.Я искал аналогичные проблемы в течение 3 часов, и ближе всего я нашел кого-то, кто сказал контрольный родительский контроллер, и это было отмечено как принятое без другого текста. – user717452

+0

Удивительный мужчина! рад, что все работает! вы понимаете, какова была ваша ошибка? В основном вы думали, что кнопка в представлении была связана с вашим свойством UIButton ... но это было не с настройкой IBOutlet сначала –

+0

Yea, был длинный 36 часов кодирования почти, так что начинать немного нечетко. – user717452