0

別のビューコントローラーからテーブルビューをリロードしたいと思います (私は PSStackedViewExample https://github.com/steipete/PSStackedViewに取り組んでいます)。変更を行う UIViewController は UITableViewController に少しあり、現在 TableView にあるデータを変更しています。これが、UIViewController で何かを変更したときに変更を直接確認するためにテーブルビューをリロードする理由です。

私はそれにアクセスできません...私はこれに夢中になるたびに、私を助けてもらえますか?

PSStackedViewExample プロジェクトでは、私が話している UITableViewController は ExampleViewController2 です。私が話しているUIViewControllerは次のとおりです:ExampleViewController1

プロジェクトをダウンロードしない場合のコードの一部を次に示します。

メインコントローラーである ExampleMenuRootController は、UITableViewController を呼び出します

.h 最初 ->

#import <UIKit/UIKit.h>
#import "Guest.h"

@interface ExampleMenuRootController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
    UITableView *menuTable_;
    NSArray *cellContents_;
    singleObjGetData * sObjDataForRootVC;
    UIViewController *viewController;
}
@property (nonatomic, retain)  UIViewController *viewController;
@property (nonatomic,strong) NSManagedObjectContext* managedObjectContext;
- (void)checkDictionnaryForIndexPathForFunction;
-(IBAction)showTable:(id)sender;
- (void)checkDictionnaryForIndexPath:(NSString *)check;
@end

.m ->

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    PSStackedViewController *stackController = XAppDelegate.stackController;
     viewController = nil;

        [sObjDataForRootVC.tmpGuest removeAllObjects];
        [self checkDictionnaryForIndexPath:@"0"];
        [self checkDictionnaryForIndexPath:@"1"];
        [self checkDictionnaryForIndexPath:@"2"];
    if (indexPath.row > 0 && indexPath.row < 4)
    {
    [sObjDataForRootVC.tmpGuest removeAllObjects];
    [self checkDictionnaryForIndexPath:[NSString stringWithFormat:@"%i", indexPath.row - 1]];
    }
    if (indexPath.row > 3 && indexPath.row < 8)
    {
        [sObjDataForRootVC.tmpGuest removeAllObjects];
        [self checkDictionnaryForIndexPathForFunction];
    }

    while ([stackController.viewControllers count]) {
        [stackController popViewControllerAnimated:YES];
    }

// HERE I CALL THE UITABLEVIEWCONTROLLER !!!

    viewController = [[ExampleViewController2 alloc] initWithStyle:UITableViewStylePlain];     
    ((ExampleViewController2 *)viewController).indexNumber = [stackController.viewControllers count];

    if (viewController) {
        [XAppDelegate.stackController pushViewController:viewController fromViewController:nil animated:YES];
    }
}

次に、UIViewController の .h は、UITableView を変更するものです。以前の UITableViewController から tableview で reloadData を実行する必要があります

#include "PSStackedViewDelegate.h"
#import "AppDelegate.h"

@interface ExampleViewController1 : UIViewController <PSStackedViewDelegate, UITextFieldDelegate>
{
    IBOutlet UIButton *validateBtn;
    IBOutlet UIButton *cancelBtn;

    singleObjGetData *sObjDataForRootVC;
}

彼ら

#import "ExampleViewController1.h"
#import "ExampleViewController2.h"
#import "ExampleMenuRootController.h"
#import "PSStackedView.h"

@implementation ExampleViewController1


#pragma mark - View lifecycle

- (void)viewDidLoad {

    sObjDataForRootVC  = [singleObjGetData singleObj];
    confirmPressed = NO;
    [self setUpView];

    [super viewDidLoad];
    self.view.width = PSIsIpad() ? 400 : 150;
}

助けてくれてどうもありがとう...

4

1 に答える 1

0

これを行うには、最初のテーブルビューで reloadData を呼び出す 2 番目のテーブルビューで通知を設定します。これを2番目のtableViewに入れます:

[[NSNotificationCenter defaultCenter]
 postNotificationName:@"refreshData"
 object:nil
 userInfo:nil//userInfoDictionary
 ];

あなたの最初のtableViewにこれを入れてください:

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(methodToRefreshYourFirstTable)
 name:@"refreshData"
 object:nil];
于 2015-11-14T05:23:16.703 に答える