我有一个 SwiftUI 视图,其中包含一个指向 UIViewControllerRepresentable 结构的工作表,该结构使用 Google Ad Manager 扩展。我希望 UIKit 扩展在使用演示模式运行完成后关闭该工作表,但通过环境使用演示模式不起作用。代码是否未按照我设置的方式运行,或者是否无法从 Google Ads Manager 中关闭该工作表?
或者,当我尝试使用 Binding 关闭工作表以更新 AdManager 中的 isPresented 时,我收到错误消息:“属性 'self.isPresented' 未在 super.init 调用中初始化”。然而,当我尝试初始化它时,它说我不能在 super.init 之前执行它,而当我将它放在 super.init 之后时,它说我不能在 super.init 之后调用它。广告加载完成后,有什么方法可以关闭该工作表(函数rewardedAdDidDismiss)?
编辑:这篇文章最初被标记为重复,但链接的问题询问如何从 UIViewController 中消除 SwiftUI 模式,而不是相反。
SwiftUI 视图:
import SwiftUI
struct AdRevenue: View {
@State var playAd = false
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
var body: some View {
Button(action: {
self.playAd = true
})
{
Text("Play Ad")
}.sheet(isPresented: $playAd) {
Ads()}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 UIViewControllerRepresentable:
import GoogleMobileAds
import SwiftUI …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个“FullScreenModalView”,您可以在其中发送具有固定高度和宽度的任何视图,并且它将以模态演示文稿显示。它工作完美,但我无法使“演示文稿托管控制器”背景颜色透明。我尝试了几种解决方案,例如将自定义透明视图设置为背景视图,但它仍然对“演示托管控制器”背景颜色没有影响。
但在视图层次结构中,我可以看到演示托管控制器的背景颜色是白色,我需要将其设置为清晰的颜色。

我的代码:
ContentView
import SwiftUI
struct ContentView: View {
@State private var isShowingCommonMenu = false
@State private var isPresented = false
var body: some View {
VStack {
Button {
//MARK: Show Network Configure List
self.isShowingCommonMenu.toggle()
} label: {
Text("GO")
}
.fullScreenCover(isPresented: $isShowingCommonMenu) {
NavigationStack {
GeometryReader { geometry in
FullScreenModalView(isShowingCommonMenu: $isShowingCommonMenu, childViewWidth: (geometry.size.width - geometry.size.width/10), childViewHeight: geometry.size.height) {
TheViewToBeLoadedView()
}
}
}
}
}
.frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
.background(Color.orange)
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的应用中的网站创建类似自己的"adBanner".
横幅是一个带有图像的按钮,实际上是横幅图形.
[_adBanner setBackgroundImage:[UIImage imageNamed:@"test_banner.png"] forState:UIControlStateNormal];
_adBanner.opaque = YES;
[self.view addSubview:_adBanner];
[(UIButton*) _adBanner addTarget:self action:@selector(showWebView:) forControlEvents:UIControlEventTouchUpInside];
[_adBanner release];
Run Code Online (Sandbox Code Playgroud)
这是我翻转视图的功能
- (IBAction)showWebView:(id)sender {
XLog ("Button Clicked");
WebViewController *_webViewController = [[WebViewController alloc] init];
_webViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:_webViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
}
在我的_webViewController中我想显示一个带有url的UIWebView
首先,我用标题编写了一个导航栏
WebViewController.m:
// Setting Navigation Bar
CGRect navBarRect = CGRectMake(0.0f, 0.0f, 320.0f, 44.0f);
navBar = [ [ UINavigationBar alloc ] initWithFrame: CGRectMake(navBarRect.origin.x, navBarRect.origin.y, navBarRect.size.width, 45.0f)];
[ navBar setDelegate: self.view ];
[ self.view addSubview: navBar ];
[ navBar release];
// Setting TitleString …Run Code Online (Sandbox Code Playgroud) iphone uinavigationcontroller uibarbuttonitem modalviewcontroller
iPhone ModalViewController:在iOS 4中,可以使用以下方法关闭多个ModalViewControllers:
[[[[self parentViewController] parentViewController] parentViewController]
dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
在iOS 5中,代码无效.
如何在iOS 5中关闭多个modalViewControllers?
我可以毫无问题地将数据从一个视图传递到其他视图.但这是我面临问题的情况.
让我们说 - >将数据传递给其他视图
ViewA->ViewB This working perfectly fine
ViewB->ViewC This working perfectly fine
ViewC->ViewB Here is the problem.
Run Code Online (Sandbox Code Playgroud)
我尝试使用push segue,它转到ViewB但是当我按下后退按钮时它转到ViewC->后退按钮 - > ViewB->后退按钮 - >视图A.当我按下后退按钮时,它必须转到ViewA.
尝试使用模态segue,它去ViewB但然后我不能去任何地方.
由于我是iOs的新手,我真的不知道如何实现这个目标?
如何从ViewC将数据传回ViewB?
我想你们可以帮助我.
编辑
在View A中,我正在调用ViewB
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"RemixScreen"])
{
if([self.recipeFrom isEqualToString:@"ViewB"])
{
ViewB *reciepe = [segue destinationViewController];
//somedata i will pass here
}
}
}
Run Code Online (Sandbox Code Playgroud)
在View B中,我这样打电话
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"ViewA"])
{
ViewA *data = [segue destinationViewController];
//some data
} …Run Code Online (Sandbox Code Playgroud) 我目前正在为我的第一款iPhone游戏设计结构并遇到问题.目前,我有一个'MenuViewController',它允许你选择要播放的关卡和一个'LevelViewController'来播放关卡.
UIButton'MenuViewController'上的A 触发了'LevelViewController'的模态segue.
UIButton'LevelViewController'上的A 触发以下方法返回'MenuViewController':
-(IBAction)back:(id)sender //complete
{
[self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
问题是,我UILabel在菜单页面上打印了一个玩家拥有的总点数.每当我从关卡中返回菜单时,我希望此标签自动更新.目前,标签是在"MenuViewController"中以编程方式定义的:
-(void)viewDidLoad {
[super viewDidLoad];
CGRect pointsFrame = CGRectMake(100,45,120,20);
UILabel *pointsLabel = [[UILabel alloc] initWithFrame:pointsFrame];
[pointsLabel setText:[NSString stringWithFormat:@"Points: %i", self.playerPoints]];
[self.pointsLabel setTag:-100]; //pointsLabel tag is -100 for id purposes
}
Run Code Online (Sandbox Code Playgroud)
self.playerPoints是MenuViewController的整数属性
有没有办法可以更新标签?提前谢谢!
模态UIViewController的父级自动旋转,但是当模态VC启动时,我只希望它以纵向显示而不能旋转.我试过简单地从shouldAutorotate模态VC中返回NO ,但没有快乐.支持iOS 5+.
任何帮助非常感谢.
我有一个模态视图控制器,我从另一个视图控制器调用.在解除模态视图控制器后,我想在视图控制器上调用一个方法来呈现该模态视图.最简单的方法是什么?
我尝试在我的模态视图控制器中执行此操作:[(ParentViewController*)self.presentingViewController foo];在调用之前[self dismissViewControllerAnimated:YES completion:nil];.
Xcode给我一个错误,说foo不被识别,即使它是在控制器中定义和原型化的.如果您的解决方案涉及块,我真的不理解它们,所以如果您想添加更多细节,我将不胜感激.谢谢.
ParentViewController.h
@interface ParentViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource>
{
NewAssignmentViewController *newAssignmentViewController;
TableViewDataSource *data;
}
-(void)foo;
@end
Run Code Online (Sandbox Code Playgroud) modalviewcontroller presentmodalviewcontroller ios objective-c-blocks
我有四个ViewController,我没有使用UITabbedbar,因为它更难定制.我使用模态segue但我认为内存消耗过多.这是我的第一个和第二个VC的屏幕截图.我必须使用什么来正确更改View?

这是我使用的代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "second") {
let secondVC = segue.destinationViewController as SecondViewController;
}
}
Run Code Online (Sandbox Code Playgroud) uitabbarcontroller uiviewcontroller modalviewcontroller ios swift
我在iOS应用程序中以模态方式呈现视图控制器.问题是没有崩溃,应用程序会在调用presentViewController:animated时冻结.统计信息显示CPU使用率为100%,即使在手动关闭应用程序后,使用率也不会下降.
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
CustomModalViewController *vvc = [sb instantiateViewControllerWithIdentifier:@"CustomModalViewController"];
if(!vvc){
NSLog(@"ERROR!!! vvc is null");
}
NSLog(@"instantiate modal view controller");
vvc.providesPresentationContextTransitionStyle = YES;
vvc.definesPresentationContext = YES;
vvc.data = data;
NSLog(@"before presenting modal view controller");
[vvc setModalPresentationStyle:UIModalPresentationOverCurrentContext];
[self presentViewController:vvc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
我尝试在我的自定义类的viewDidLoad中打印一些调试语句,但这些也没有被调用.
我不明白为什么没有显示视图控制器.任何帮助将不胜感激.我想知道在什么情况下你的应用程序在推送视图控制器时进入无限循环,还是因为其他原因?
更新:
我更新到XCode 7后发生此错误.不确定,但我想这可能是新SDK-UIKit或LLVM编译器的问题.我用Xcode 6.4将我的项目复制到另一个mac,错误消失了!我没有更改任何会导致问题的构建设置.
有关如何进行的任何指示?