別のビューコントローラーからテーブルビューをリロードしたいと思います (私は 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;
}
助けてくれてどうもありがとう...