DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
//code
}
code within asyncAfter will get executed after 10 seconds. Is there a way to cancel execution before 10 seconds
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I have a framework that will be consumed by other developers to develop the app.
I designed a view using SwiftUI in that framework and wanted to present that view with model animation programatically from the framework.
There are many sample that shows how to present a view with modal animation associated with button tap.
Can anyone let me know how to present a view modal programmatically?
I have a framework written in Swift and I wanted to design a view using SwiftUI. Is it possible?
I wanted to present an View with modal animation full screen on top the the existing view/viewcontroller programmatically(without button tap or tap gesture).
Is it possible to present a view without button tap/tap gesture?
I have the business logic in Swift class and built UI using SwiftUI. Below the high level code that shows how SwiftUI and its subview receives the data from Swift. Please let me know if its correct approach
class SwiftClass{
var score = "1"
func A () {}
func B () {
// score will get updated frequently
let scoreModal = ScoreUIViewModel()
let scoreUI: ScoreUI = ScoreUI(showModal: .constant(true), scoreUIViewModel: scoreModal)
DispatchQueue.main.async {
scoreUI.displayScoreUI()
}
// score getting updated from another class
scoreModal.score = score
// score getting updated from another class
score = "2"
scoreModal.score = "2"
// score getting updated from another class
score = "3"
scoreModal.score = "3"
// score getting updated from another class
score = "4"
scoreModal.score = "4"
.......
}
}
import SwiftUI
class ScoreUIViewModel: Observable {
@Published score: String
}
struct ScoreUI: View {
@State var scoreUIViewModel: ScoreUIViewModel
func displayScoreUI() {
let hostController = UIHostingController(rootView: ScoreUI())
hostController = .overCurrentContext
topViewController()!.present(hostController, animated: true, completion: nil)
}.environmentObject(scoreUIViewModel)
}
struct ScoreText: View {
@EnvironmentObject var scoreUIViewModel: ScoreUIViewModel
Text(score).foregroundColor(.green)
}
public protocol UploadDelegate: AnyObject {}
class NetworkManager: UploadDelegate {}
class A {
B().abc(uploadDelegate:NetworkManager() )
}
class B {
func abc (uploadDelegate: UploadDelegate) {
C().efg(uploadDelegate:uploadDelegate )
}
}
class C {
func efg (uploadDelegate: UploadDelegate) {
D().hij(uploadDelegate:uploadDelegate )
}
}
class D {
func hij (uploadDelegate: UploadDelegate) {
uploadDelegate.func()
}
}
Can we pass the protocol/delegate as a func parameter? If yes, I believe its a weak property.
I am using "Excluded Source File Names" in Xcode build settings to remove a folder from IPA. The given relative path is correct but for some reason, the folder that needs to be excluded is still exists in the .app file. Any idea why Excluded Source File Names is not working. The folder that I am trying to remove is listed under "Copy Bundle Resources"
Here is the path "$(SRCROOT)/../foldera/folderb/foldertoberemoved"
class A {
func processData {
let viewModel: ViewModal = ViewModal()
let viewController = ViewController()
viewController.displayUI(viewModel)
....
....
....
....
viewModel.imageName = "abcd"
....
....
....
....
viewModel.imageName = "efg"
....
....
....
....
viewModel.imageName = "hij"
}
}
class ViewController {
func displayUI (viewModal: ViewModal){
let contentView = ContentView(viewModal: viewModal).environmentObject(self)
// present contentView
}
}
class ViewModal {
@Published var imageName: String = ""
@Published var label: String = ""
// string formatting
}
struct ContentView: View {
@State var viewModel: ViewModal
@EnvironmentObject var viewController: ViewController
var body: some View {
}
}
Can class A directly access ViewModal or it should pass the data to ViewController and ViewController set the data in ViewModal
func displayUI () {
let hostingController = UIHostingController(rootView: ContentView(ViewModel: contentViewModal).environmentObject(self))
}
Above code works fine.
I attempted to make the hostingController as instance variable instead of local variable and declared the hostingController outside of display function like this
lazy var hostingController: UIHostingController = UIHostingController(rootView: ContentView())
and so I removed let keyword
func displayUI () {
hostingController = UIHostingController(rootView: ContentView(ViewModel: contentViewModal).environmentObject(self))
}
Once I remove the let keyword I started getting this error.
Cannot convert value of type 'some View' to specified type ‘ContentView'
Any idea why I am getting this error after removing let keyword declared before hostingController variable?
I wrote a few unit test cases using XCTest by mocking the data? Is there any best practice to have multiple test profiles with different data sets? Sometime mock should return nil, sometimes an array with 2 elements and sometimes an array with 10 elements. How to have multiple test profiles?
Topic:
Developer Tools & Services
SubTopic:
Instruments
Tags:
Instruments
XCTest
Testing
Continuous Integration
I have declared an NSMutableArray and the count should not exceed 100. If some one calls addObject method to add an item to that array when the count is 100 then that method call should not be executed until someone removes an item so that count will go down below 100. Can we use semaphore or group dispatch for signaling or mutex/NSLock is recommended.
How to make one task(insert) wait for another to task(remove) in Objective C?
What is the best way to print in the order for the given implementation
(void) print:(NSString*) str
while(true)
{
NSLog(@“%@”, str);
}
}
[self print:@“123”];
[self print:@“ABC”];
[self print:@“456”];
[self print:@“DEF”];
output should be printing in the order continuously
123
ABC
456
DEF
123
ABC
456
DEF
…
…
…
I linked a framework as optional/weak and it's working fine in the latest Xcode but in the older Xcode version compilation is failing due to "framework not found". Is there a way to fix the compilation error in the older Xcode version?
My client is using Xcode 11 but the iOS framework imported in the project is available only in Xcode 13. Client is getting "framework not found" in Xcode 11 . Is there a way to make my project compatible with older Xcode Version?