任何人都可以描述如何使用XCode在monotouch中创建UIPickerView并使用示例数据填充它吗?
我确实看过这里的例子:https://github.com/xamarin/monotouch-samples/blob/master/MonoCatalog-MonoDevelop/PickerViewController.xib.cs但这对我来说创建我的UIPickerView并不是很有帮助XCode.这是我到目前为止所拥有的:
public partial class StatusPickerPopoverView : UIViewController
{
public StatusPickerPopoverView (IntPtr handle) : base (handle)
{
pickerStatus = new UIPickerView();
pickerStatus.Model = new StatusPickerViewModel();
}
public StatusPickerPopoverView (): base ()
{
}
public class StatusPickerViewModel : UIPickerViewModel
{
public override int GetComponentCount (UIPickerView picker)
{
return 1;
}
public override int GetRowsInComponent (UIPickerView picker, int component)
{
return 5;
}
public override string GetTitle (UIPickerView picker, int row, int component)
{
return "Component " + …
Run Code Online (Sandbox Code Playgroud) 有没有办法将视图放在列表标题中而不包含部分?表视图通常有一个名为的属性,tableHeaderView
它是整个表的标题,与节标题无关。
我试图拥有一个列表并能够像tableHeaderView
from一样滚动它UITableView
。
struct MyView: View {
let myList: [String] = ["1", "2", "3"]
var body: some View {
VStack {
MyHeader()
List(myList, id: \.self) { element in
Text(element)
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用NSNotificationCenter在我的应用程序中向另一个应用程序发布通知.所以在我的目标类中,我创建我的观察者如下:
NSNotificationCenter.DefaultCenter.AddObserver ("ChangeLeftSide", delegate {ChangeLeftSide(null);});
Run Code Online (Sandbox Code Playgroud)
我有我的方法:
public void ChangeLeftSide (UIViewController vc)
{
Console.WriteLine ("Change left side is being called");
}
Run Code Online (Sandbox Code Playgroud)
现在从另一个UIViewController我发布通知如下:
NSNotificationCenter.DefaultCenter.PostNotificationName("ChangeLeftSide", this);
Run Code Online (Sandbox Code Playgroud)
如何在目标类中访问在发布通知中传递的视图控制器?在iOS中它是非常直接的,但我似乎无法找到我的方式在monotouch(Xamarin)......
这是我通知系统以读出我的元素的方式:
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, cell)
Run Code Online (Sandbox Code Playgroud)
问题是当我发送多个通知时,已经在读取的通知会被打断!我希望能够排队...
我还在这里的另一个问题中发现,我应该使用属性字符串:
attributedString.addAttribute(NSAttributedStringKey(
rawValue: UIAccessibilitySpeechAttributeQueueAnnouncement),
value: true,
range: range!.nsRange)
Run Code Online (Sandbox Code Playgroud)
我在这里想念什么?
所以我正在尝试使用如下所示的自定义UITableViewCell:
我正在尝试将详细信息标签保持对齐,并将标题标签上的内容设置得更高.
所以我面临的挑战是我希望Title Cell上第二列的左边缘与整个视图的中心对齐.
有没有办法做到这一点?
所以,假设我有一个这样的类:
class Employee: NSObject {
var id: String?
var someArray: [Employee]?
}
Run Code Online (Sandbox Code Playgroud)
我使用反射来获取属性名称:
let employee = Employee()
let mirror = Mirror(reflecting: employee)
propertyNames = mirror.children.flatMap { $0.label }
// ["businessUnitId", "someArray"]
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好!现在我需要能够找出每个属性的类型,所以如果我这样做employee.valueForKey("someArray")
,它将无法工作,因为它只给我AnyObject类型.最好的方法是什么?特别是对于数组,我需要能够动态地告诉数组包含类型Employee
.
我想知道如果我只知道结构体的名称(字符串格式),我该如何初始化它?
我知道对于类来说,可以使用NSClassFromString
以下方法:
@objc(MyClass)
class MyClass: NSObject {
var a: Int?
var b: String?
}
let myClassType: NSObject.Type? = NSClassFromString("MyClass") as? NSObject.Type
let myClass = myClassType?.init() // this will be NSObject but in reality is MyClass
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法对结构做类似的事情?
struct MyStruct {
var a: Int
var b: String
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Picker
进行简单的选择。目前我正在使用.inline
导航栏来显示标题。(这是我得到示例的地方https://www.hackingwithswift.com/quick-start/swiftui/pickers-in-forms)
struct ContentView: View {
var strengths = ["Mild", "Medium", "Mature"]
@State private var selectedStrength = 0
var body: some View {
NavigationView {
Form {
Picker(selection: $selectedStrength, label: Text("Strength")) {
ForEach(0 ..< strengths.count) {
Text(self.strengths[$0])
}
}
}.navigationBarTitle("Parent Title", displayMode: .inline)
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在Picker
或ForEach
什至Text
foreach 内的 s 上设置内联标题时,父标题会被覆盖......
有没有一个好的方法来解决这个问题,或者我应该继续制作我自己的选择器(我们那里有任何好的简单的选择器)?
我有一个UIScrollView,里面有一个带图像的UIImageView.我希望能够缩放并仍然能够获得UIImage的坐标.我的图像的坐标大于iPhone屏幕600x800,并且使用当前的方法,我只获得iPhone屏幕上的坐标.如何获取已被点击的UIImage上实际位置的坐标?
这是我到目前为止所得到的:
- (void) loadView {
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
tapGesture.numberOfTapsRequired = 1;
tapGesture.numberOfTouchesRequired = 1;
UIImage *mapImage = [UIImage imageNamed:@"Map1.png"];
imageV = [[UIImageView alloc] initWithImage:mapImage];
//imageV.userInteractionEnabled = YES;
//[imageV addGestureRecognizer:tapGesture];
//CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
scrollV = [[UIScrollView alloc] initWithFrame:imageV.frame];
scrollV.contentSize = CGSizeMake(imageV.frame.size.width, imageV.frame.size.height);
[scrollV addGestureRecognizer:tapGesture];
[scrollV addSubview:imageV];
scrollV.userInteractionEnabled = YES;
scrollV.maximumZoomScale = 5;
scrollV.minimumZoomScale = 0.5;
scrollV.bounces = NO;
scrollV.bouncesZoom = NO;
scrollV.delegate = self;
self.view = scrollV;
}
-(void)tapDetected:(UIGestureRecognizer*)recognizer{
NSLog(@"tap detected.");
CGPoint point …
Run Code Online (Sandbox Code Playgroud) 这看起来似乎太容易了,也许这对我来说太困惑了......或许我太累了,无法理性思考.
我正在尝试使用imagePickerController获取用户从相册中选择的UIImage的位置.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *pic = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSData *data = UIImageJPEGRepresentation(pic, 0.01f);
UIImage *image1 = [UIImage imageWithData:data];
bookmarkImage.image = image1;
NSLog(@"new image size = %i", [data length]);
NSURL *url = [info objectForKey:@"UIImagePickerControllerReferenceURL"];
4NSLog(@"%@",url);
ALAssetsLibraryAssetForURLResultBlock resultBlock = ^(ALAsset *myAsset){
[myAsset valueForProperty:ALAssetPropertyLocation];
};
[self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
现在,我尝试为ALAsset 调用valueForProperty是我遇到麻烦的地方.这是我得到的错误:
使用未声明的标识符'ALAssetPropertyLocation'.
请帮忙!这真的令人沮丧......我需要照片的位置......
所以我所拥有的是一个类层次结构,如下所示:
@interface MyClass : ParentClass
-(void)myMethod
{
[super myMethod];
// some specific operation
}
@end
@interface ParentClass : ParentParentClass
-(void)myMethod
{
[super myMethod];
// some specific operation
}
@end
@interface ParentParentClass : ParentParentParentClass
-(void)myMethod
{
[super myMethod];
// some specific operation
}
@end
Run Code Online (Sandbox Code Playgroud)
现在,让我们说,在MyClass
,我想避免调用ParentClass
的myMethod
,而是要拨打的myMethod
中ParentParentClass
.
我该怎么做?
我已经尝试过铸造,super
但这不起作用.
ios ×7
swift ×4
objective-c ×3
c# ×2
iphone ×2
swiftui ×2
xamarin.ios ×2
alasset ×1
autolayout ×1
ipad ×1
picker ×1
reflection ×1
struct ×1
swiftui-list ×1
uiimage ×1
uiimageview ×1
uipickerview ×1
uiscrollview ×1
uitableview ×1