gpt4 book ai didi

ios - 将推送 segue 添加到 tableview 的自定义单元格内的按钮

转载 作者:行者123 更新时间:2023-11-29 03:23:37 26 4
gpt4 key购买 nike

我有一个项目,它显示与其他社交网络类似的状态提要。每个提要项目都有多个按钮,可以执行不同的操作。其中 1 个按钮会打开一个新的 View Controller ,其中显示已发布在特定状态上的评论。当单击此按钮并打开 View Controller 时,我希望它是一个推送 segue,以便它们是一个后退按钮,用户可以导航回提要。

单击此按钮并启动新的 vc 时,需要将有关被单击的特定状态/单元格的一些唯一数据发送到“comments vc”。执行此操作的代码将放在哪里?

自定义单元格.H

#import <UIKit/UIKit.h>

@interface FeedItemCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *DefaultImg;
@property (weak, nonatomic) IBOutlet UILabel *NameLabel;
@property (weak, nonatomic) IBOutlet UILabel *StatusLabel;
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;


@property (nonatomic, copy) NSString *msg_id;
@property (nonatomic, copy) NSString *status;
@property (nonatomic, weak) IBOutlet UIButton* commentButton;
@property (nonatomic, weak) IBOutlet UIButton* bumpButton;
@property (strong, nonatomic) id delegate;
-(IBAction)viewComments:(id)sender;
-(IBAction)bump:(id)sender;

@end


@protocol CustomCellProtocol <NSObject>
- (void)EBCellPressed:(NSString *)cellName;

自定义单元格.M

#import "FeedItemCell.h"
#import "CommentsViewController.h"
#import "NSDate+TimeAgo.h"


@interface FeedItemCell() <WYPopoverControllerDelegate>
{


}
- (IBAction)open:(id)sender;
- (void)close:(id)sender;
@end


@implementation FeedItemCell
@synthesize commentButton;
- (instancetype)initWithDelegate:(id)delegate {
self = [super init];
if (self) {
self.delegate = delegate;
// Initialization code
}
return self;
}

-(IBAction)bump:(id)sender{

[self.delegate EBCellPressed:@"NAME"];



}

- (IBAction)open:(id)sender
{

}








@end

公共(public)供稿。中号

#import "PublicFeedViewController.h"
#import "FeedItemCell.h"
#import "AFNetworking.h"
#import "UIImageView+WebCache.h"
#import "InboxDetailViewController.h"
#import "SWRevealViewController.h"
#import "CommentsViewController.h"
#import "NSDate+TimeAgo.h"


@interface PublicFeedViewController (){
NSArray *NameLabel;
NSArray *StatusLabel;
NSMutableArray *feedArray;
}

@end

@implementation PublicFeedViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];

//The below code prompts the user for push notifications. If allowed, code in AppDelegate takes over and stores the token.
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
// Do any additional setup after loading the view.
self.FeedTable.dataSource=self;
self.FeedTable.delegate=self;

// Set the side bar button action. When it's tapped, it'll show up the sidebar.
_sidebarButton.target = self.revealViewController;
_sidebarButton.action = @selector(revealToggle:);

// Set the gesture
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"foo": @"bar"};
[UIApplication sharedApplication].networkActivityIndicatorVisible = TRUE;
[manager POST:@"www" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
//NSLog(@"JSON: %@", responseObject);

self->feedArray = [responseObject objectForKey:@"feed"];

[self.FeedTable reloadData];
[UIApplication sharedApplication].networkActivityIndicatorVisible = FALSE;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];


}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return feedArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{


NSString *CellIdentifier=@"Cell";

FeedItemCell *Cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(!Cell){
Cell = [[FeedItemCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

}


NSLog(@"FEED ARRAY: %@", self->feedArray);
NSDictionary *tempDictionary= [self->feedArray objectAtIndex:indexPath.row];
// Display recipe in the table cell
NSString *thumb_img = [tempDictionary objectForKey:@"thumb_img"];
NSString *thumb_path=@"http://buhzhyve.com/CI_REST_LOGIN/UPLOADS/thumbs/";
NSString *thumb_url = [thumb_path stringByAppendingString:thumb_img];



Cell.NameLabel.text=[tempDictionary objectForKey:@"first_name"];
Cell.StatusLabel.text=[tempDictionary objectForKey:@"message"];
Cell.msg_id=[tempDictionary objectForKey:@"msg_id"];
//Cell.status=[tempDictionary objectForKey:@"message"];
Cell.StatusLabel.lineBreakMode=0;
Cell.StatusLabel.numberOfLines=0;
NSString *commentCount = [tempDictionary objectForKey:@"comment_count"];
NSString *commentButtonText =[NSString stringWithFormat:@"Comments ( %@ )",commentCount];
[Cell.commentButton setTitle:commentButtonText forState: UIControlStateNormal];
NSString *bumpCount = [tempDictionary objectForKey:@"bump_count"];
NSString *bumpButtonText =[NSString stringWithFormat:@"Bumps ( %@ )",bumpCount];
[Cell.bumpButton setTitle:bumpButtonText forState: UIControlStateNormal];
//[Cell.StatusLabel sizeToFit];
NSString *created_string=[tempDictionary objectForKey:@"created"];
double created_double = created_string.doubleValue;
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:created_double];
NSString *ago = [date timeAgo];
Cell.timeLabel.text=ago;




//Cell.DefaultImg.image = [UIImage imageNamed:@"buhz_mini_logo.png"];

[Cell.DefaultImg setImageWithURL:[NSURL URLWithString:thumb_url]
placeholderImage:[UIImage imageNamed:@"buhz_mini_logo.png"]];
return Cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Ideally you should do lazy loading so that instead of creating a new textView each time, you just reuse the same one.
UITextView *temp = [[UITextView alloc] initWithFrame:CGRectMake(82, 26, self.FeedTable.frame.size.width, 18)]; //This initial size doesn't matter
NSDictionary *tempDictionary= [self->feedArray objectAtIndex:indexPath.row];
NSString *status = [tempDictionary objectForKey:@"message"];
temp.font =[UIFont fontWithName:@"System" size:12];
temp.text = status;


CGFloat textViewWidth = 218;
CGRect tempFrame = CGRectMake(82,26,textViewWidth,18); //The height of this frame doesn't matter.
CGSize tvsize = [temp sizeThatFits:CGSizeMake(tempFrame.size.width, tempFrame.size.height)]; //This calculates the necessary size so that all the text fits in the necessary width.

//Add the height of the other UI elements inside your cell

return tvsize.height + 70;


}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"commentSegue"]) {

}
}

@end

公共(public)提要.h

#import <UIKit/UIKit.h>

@interface PublicFeedViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *FeedTable;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *sidebarButton;
- (IBAction)addItem;



@end

最佳答案

假设您在代码中创建此按钮,这就是您可以处理的方式。

第一行告诉按钮,当它被按下时,它需要调用这个作为 Action 发送的特定选择器/方法。

[button addTarget:self action:@selector(showNextViewController) forControlEvents:UIControlEventTouchUpInside]; 

然后您将在同一个类中创建此方法。

- (void) showNextViewController
{
NewViewController *newViewController = [[NewViewController alloc] init]; //Edit this line of course to fit for your situation. I'm not sure if you're loading from an XIB or from a Storyboard, or neither.
newViewController.someVariable = someVariable;
newViewController.someOtherVariable = someOtherVariable;

[[[[[UIApplication sharedApplication] delegate] window] rootViewController].navigationController pushViewController:view animated:YES];
}

这会将必要的数据发送到新的 View Controller ,它还会在屏幕上显示带有后退按钮的新 View 。

希望这能奏效!

关于ios - 将推送 segue 添加到 tableview 的自定义单元格内的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20766029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com