如何创建一个SEGUE从表视图推回编辑模式?(How to to create a segue to

2019-10-19 18:12发布

也许我没有问正确的称号,对不起这个,我是一个初学者,所以我会解释一下:

我有2个屏幕:1.创建笔记 - 该屏幕有一个视图控制器,TextView的和导航(具有创建/取消)。 2.注意到页 - 该屏幕有一个表视图控制器和一个带加号按钮的导航。 (非常类似于苹果应用笔记)

我想,在表视图,每当我单击单元格,将带我回到这个笔记的编辑页面...

所以我说从小区到备注页每一个我点击一个细胞它会​​打开一个新的笔记页面时间一推SEGUE,以及...所以我知道我在这里失去了一些东西,真的希望你能帮助我看着办吧

这是我的表视图控制器.m文件:

#import "NMNotesListViewController.h"
#import "NMCreateNotesViewController.h"

@interface NMNotesListViewController ()

@property (strong, nonatomic) NSMutableArray *notes;

@end

@implementation NMNotesListViewController


- (IBAction) unwindToList: (UIStoryboardSegue *) segue
{

    NMCreateNotesViewController *source = [segue sourceViewController];
    NMNote *note = source.note;

    if (note != nil) {
        [self.notes addObject:note];
        [self.tableView reloadData];
    }

}

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.notes = [[NSMutableArray alloc] init];

    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

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

#pragma mark - Table view data source

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return [self.notes count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"NotesPrototypeCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    // Configure the cell...


    NMNote *note = [self.notes objectAtIndex:indexPath.row];
    cell.textLabel.text = note.content;


    return cell;
}

@end

这是我的视图控制器(创建笔记).m文件:

#import "NMCreateNotesViewController.h"

@interface NMCreateNotesViewController ()

@property (weak, nonatomic) IBOutlet UIBarButtonItem *createButton;

@property (weak, nonatomic) IBOutlet UITextView *textField;

@end

@implementation NMCreateNotesViewController

- (void)registerForKeyboardNotifications
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil];

}

- (void)keyboardWasShown:(NSNotification*)aNotification {
    NSDictionary* info = [aNotification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    CGRect bkgndRect = self.textField.superview.frame;
    bkgndRect.size.height += kbSize.height;
    [self.textField.superview setFrame:bkgndRect];
    [self.textField setContentOffset:CGPointMake(0.0, self.textField.frame.origin.y-kbSize.height) animated:YES];
}


- (void) keyboardWillBeHidden: (NSNotification *) aNotification
{
    UIEdgeInsets contentInsets = UIEdgeInsetsZero;

    self.textField.contentInset = contentInsets;

    self.textField.scrollIndicatorInsets = contentInsets;
}


- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if (sender != self.createButton) return;
    if (self.textField.text.length > 0) {
        self.note = [[NMNote alloc] init];
        self.note.content = self.textField.text;

    }
}

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

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

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

@end

Answer 1:

@jeely很接近,但你需要做的是,创建一个从SEGUE viewControllerviewController

在委托的tableView didSelectRowAtIndexPath ,你会瓶坯SEGUE:

 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
   [self performSegueWithIdentifier:@"yourSegue" sender:sender];
 }

因为你想的音符传递到下一个控制器,你需要做的是,在prepareForSegue方法:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure your segue name in storyboard is the same as this line
    if ([[segue identifier] isEqualToString:@"yourSegue"])
    {  
       //get the note
       NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
       NMNote *note = [self.notes objectAtIndex:indexPath.row];
       //set the note
       NMCreateNotesViewController *createVC = (NMCreateNotesViewController*)segue.destinationViewController;
       createVC.noteToDisplay = note.content;
    }
}

最后noteToDisplay只是一个NSString财产一旦你将设置为TextView的财产segue执行。



文章来源: How to to create a segue to push back to editing mode from a table view?