gpt4 book ai didi

ios - 如何显示嵌入式 View 的工具栏?

转载 作者:行者123 更新时间:2023-11-29 03:31:14 24 4
gpt4 key购买 nike

我有一个嵌入在标准 View Controller 中的表格 View 。表格 View 有一个工具栏,我想显示它。

目前,工具栏保持不显示状态。

我已经尝试过:

  • 将工具栏设置为在嵌入表格 View 中显示(代码+ Storyboard)。
  • 将工具栏设置为在父 View Controller 中显示(代码 + Storyboard)。
  • 设置工具栏不显示在 View Controller 中,而是显示在嵌入表格中(代码+ Storyboard)。

如果我直接访问表格而不是通过嵌入 View ,工具栏就会存在(并正确显示)。嵌入 View 的操作是否会删除工具栏?

如何在嵌入 View 中显示表格 View 工具栏?

编辑:新代码

ParentViewController.h

#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import "childTable.h"

@interface ParentViewController : UIViewController <MFMailComposeViewControllerDelegate, UpdateParentProtocol>

@property (weak, nonatomic) IBOutlet UIBarButtonItem *emailButton;
@property (weak, nonatomic) NSString *buttonEnabled;
@property (weak, nonatomic) ChildTable *childTableVC;

@end

parentViewController.m

#import "ParentViewController.h"

@interface ParentViewController () <MFMailComposeViewControllerDelegate>

@end

@implementation ParentViewController

@synthesize emailButton;
@synthesize buttonEnabled;
@synthesize childTableVC;

- (void)viewDidLoad
{
[super viewDidLoad];

[self.childTableVC setDelegate:self];

}


-(void) isButtonEnabled:(NSString *)enabledX {

NSLog(@"isButtonEnabled");

enabledX = buttonEnabled;

if ([buttonEnabled isEqualToString:@"FALSE"])
{

emailButton.enabled = FALSE;


}
else
{
emailButton.enabled = TRUE;

}
}

childTable.h

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@protocol UpdateParentProtocol <NSObject>

@required
-(void) isButtonEnabled: (NSString *) enabledX;

@end

@interface childTable: UITableViewController {

id <UpdateParentProtocol> delegate;

}

//@property (weak, nonatomic) IBOutlet UIBarButtonItem *emailButton;

@property (strong, nonatomic) NSString *enabledX;

@property (strong, nonatomic) id <UpdateParentProtocol> delegate;

childTable.m

-(void) tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"TableEditingEnded");

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

self.myArray = [defaults mutableArrayValueForKey:@"favourite_views_key"];

if (myArray == 0) {

enabledX = @"FALSE";
NSLog(@"PASSEDFALSE");

[[self delegate] isButtonEnabled:enabledX]; }

else {

enabledX = @"TRUE";
NSLog(@"PASSEDTRUE");

[[self delegate] isButtonEnabled:enabledX]; }

}

当我运行代码时,我得到了 TableEditingEnded 和 PASSEDTRUE 的 NSLog 打印,但没有 isButtonEnabled。这对我来说表明 -(void) isButtonEnabled:(NSString *)enabledX 没有被调用。你能建议一下为什么吗?

最佳答案

下面是如何使用协议(protocol)从 subview Controller 与父 View Controller 进行通信

@protocol UpdateParentProtocol <NSObject>

-(void)doSomething1;
-(void)doSomething2;

@end

@interface ParentViewController : UIViewController<UpdateParentProtocol>

@end

@implementation ParentViewController
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
TableViewController *tableViewController = segue.destinationViewController;
tableViewController.delegate = self;
}

-(void)doSomething1
{
NSLog(@"doSomething1");
}

-(void)doSomething2
{
NSLog(@"doSomething2");
}

@end
----

#import "ParentViewController.h"

@interface TableViewController : UITableViewController

@property(strong, nonatomic) id<UpdateParentProtocol> delegate;

@end

@implementation TableViewController


-(void)updateParentWithData
{
if( [self.delegate respondsToSelector:@selector(doSomething1)])
{
[self.delegate performSelector:@selector(doSomething1)];
}
}

关于ios - 如何显示嵌入式 View 的工具栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19757783/

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