我是iOS和Objective-C以及整个MVC范例的新手,我坚持以下内容:
我有一个视图作为数据输入表单,我想让用户选择多个产品.产品列在另一个带有a的视图中,UITableViewController我启用了多个选择.
我的问题是,如何将数据从一个视图传输到另一个视图?我将UITableView在数组中保留选择,但是如何将其传递回上一个数据输入表单视图,以便在提交表单时将其与其他数据一起保存到Core Data?
我已经四处浏览并看到一些人在app delegate中声明了一个数组.我读了一些关于单身人士的事情,但不明白这些是什么,我读了一些关于创建数据模型的内容.
执行此操作的正确方法是什么?我将如何进行此操作?
model-view-controller objective-c uiviewcontroller ios swift
我试图将我的app委托中的对象传递给另一个类中的通知接收器.
我想传递整数messageTotal.现在我有:
在接收器中:
- (void) receiveTestNotification:(NSNotification *) notification
{
if ([[notification name] isEqualToString:@"TestNotification"])
NSLog (@"Successfully received the test notification!");
}
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissSheet) name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveTestNotification:) name:@"eRXReceived" object:nil];
Run Code Online (Sandbox Code Playgroud)
在正在进行通知的类中:
[UIApplication sharedApplication].applicationIconBadgeNumber = messageTotal;
[[NSNotificationCenter defaultCenter] postNotificationName:@"eRXReceived" object:self];
Run Code Online (Sandbox Code Playgroud)
但我想将对象传递messageTotal给另一个类.
cocoa-touch objective-c nsnotifications nsnotificationcenter swift
我正在制作一个对象,用于下载所有视图控制器的内容.该对象是单例实例,并且在下载完成后具有带有接收数据的回调方法.它还有一个委托属性,以便在下载完成后知道要回调哪个对象.
有多个控制器使用此共享实例,我的问题是如何回调请求下载的正确视图控制器.
我的方法是使用委托,但问题是,由于其他视图控制器也是它的委托,下载对象可以回调每个对象,这将很难跟踪.
我有一种情况,我必须每次从背景到前景初始化一个对象,并且应该使用NSNotificationCenter而不是appdelegate,因为我建立了一个静态库,因此不会有appdelegate,所以请帮助我同样.
在我的React本机应用程序中,我正在尝试将本地代码中的事件发送到AppDelegate中的JavaScript.为此,我打电话给:
[self.bridge.eventDispatcher sendAppEventWithName:@"EventReminder"
body:@{@"name": eventName}];
Run Code Online (Sandbox Code Playgroud)
在我的应用代表中.当然要做到这一点我需要导入:
并合成桥梁
@synthesize bridge = _bridge;
Run Code Online (Sandbox Code Playgroud)
但是在此之后的事件中,桥变量不存在.为了使这个错误消失,我使我的AppDelegate符合RCTBridgeModule协议,如下所示:
AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeModule>
Run Code Online (Sandbox Code Playgroud)
然后在我的AppDelegate.m中,我做了:
RCT_EXPORT_MODULE()
Run Code Online (Sandbox Code Playgroud)
毕竟我的桥终于没有错误,但每次我在AppDelegate中使用它,它都是零.
我哪里错了?
提前致谢.
我看到了一些关于在同一个类中添加观察者和句柄的例子,但我想知道的是,是否可以在第一个视图控制器中添加观察者并在第二个视图控制器中处理它?
我希望不断从第一个视图控制器发送距离并在第二个控制器中处理它.第二个视图控制器添加为子视图:addSubview,addChildViewController.
它就像android中的广播一样.
objective-c observers nsnotification nsnotificationcenter ios
我对此仍然很陌生,但我在示例的帮助下一直在快速学习.我目前正在考虑将一个正在运行的程序的通知发布到另一个程序,而CFNotificationCenter就是前进的方向.唯一的问题是,我无法使用它,除了苹果的视频浏览器之外似乎没有任何例子.
是否有人能够提供一个关于如何设置它的迷你示例,以便我可以编写一个应用程序来发布通知,一个用于接收测试通知和doSomething();? 任何帮助是极大的赞赏!
我在AppDelegate中调用下面的代码:
-(void) application:(UIApplication *)application performFetchWithCompletionHandler:
(void (^)(UIBackgroundFetchResult))completionHandler {
-(BOOL)backgroundRefresh{
newData = false;
callStartTime = [NSDate date];
[self processAll];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
while(!fetchComplete);
NSLog(@"NOW COMPLETE");
});
NSLog(@"Got here now!");
return newData;
}
Run Code Online (Sandbox Code Playgroud)
对[self processAll]的调用运行具有异步调用等的代码,并将继续循环,直到所有活动完成,重复调用自身.完成所有任务后,fetchComplete将设置为true.这部分工作正常.
我需要代码等待fetchComplete为true,然后将bool返回给AppDelegate.
问题是,非常正确的是,当前检查虽然它可以显示NSLog等,但是将BOOL返回给调用者是没有用的,因为该进程当前是异步的.我已将其设置为异步以便它运行,否则,我发现processAll代码被阻止运行.
有人可以说明如何监视fetchComplete,只有一次是真的将bool返回给调用函数?
我已经尝试在返回while之后将返回移动到异步块,但是由于在块内调用,这会返回语法错误.
非常感谢.
所以我有一个视图控制器,当用户登录时它会被解除。在解除功能完成块中,我触发了一个应该重新加载下一个视图控制器的函数。什么也没发生,空白的视图控制器。但是如果我在已经登录的情况下关闭应用程序,然后重新打开它,一切都会像它应该的那样加载。
所以这是我的登录功能:
func loginFunc() {
if emailField.text != "" && passwordField.text != "" {
Auth.auth().signIn(withEmail: emailField.text!, password: passwordField.text!, completion: { (user, error) in
if user != nil {
// Sign In Successful
print("Sign In Sucessful")
self.dismiss(animated: true, completion: {
self.mainVC.starterMethod()
})
} else {
if let myError = error?.localizedDescription {
print(myError)
} else {
print("Error")
}
}
})
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的starterMethod():
func starterMethod() {
ref = Database.database().reference()
let userId = Auth.auth().currentUser?.uid
if userId != nil {
print("You are …Run Code Online (Sandbox Code Playgroud) 我有一个名为FirstViewController的视图控制器,第二个名为SecondViewController.我提出了第二个视图控制器
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"mainController"];
[self presentViewController:controller animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
在SecondViewController的.m中,我想在FirstViewController中更改UILabel的文本.但是,标签的文本未更新.如何在SecondViewController中按下UIButton时更新FirstViewController的标签?
ios ×7
objective-c ×6
swift ×3
asynchronous ×1
background ×1
callback ×1
cocoa-touch ×1
delegates ×1
foreground ×1
javascript ×1
macos ×1
observers ×1
react-native ×1
singleton ×1
uilabel ×1
wait ×1
while-loop ×1