Cocoa - NSTabViewController, how to change tabview on button press? - objective-c

I've spent the past few days trying to work this out. Basically, when a user presses a button in my first tab, I want the the tabview to change to the next tab.
Here's how my storyboard looks. More specifically, when a user presses Youtube in my Homepage tab, I want FirstWebController to open.
Every method Ive found online hasn't worked, so I was hoping someone could provide some insight into next step I should take.
Thanks in advance.

Set the NSTabViewController's selectedTabViewItemIndex to the index of the tab item you want to select and it will change. You do have to keep track of the positions of the tab view items so you know which index is which but that's really only something you have to worry about if your tab view items are dynamic.

You can use
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
Delegate method to track when tabbar Item tapped and can set index there.

Related

How can I create a back button on a Tab Bar Controller view?

I wonder if someone could help me please? I'm brand new to iOS and whilst I've been searching various sites for my answer, I'm afraid I haven't come across it yet but feel this could just be my naivety to the language so I apologise if this is a really simple thing...
I have a Tab Bar Controller with 3 views. On my first tab I have a button which when clicked, I want it to go to the 3rd tab (which is does). However, on the 3rd tab, I would like to insert a back button so that the user has the option of clicking back to go back to what is essentially the main menu of my application.
Can anyone tell me how I can do this please? I'm currently using storyboarding as I'm not very good with the language yet but any help would be greatly appreciated.
Thanks
Sean
You need to add a navigation bar to the view and set a bar button item with the action to change the tab.
Remember that a tab controller is standard across multiple apps, the user is use to tapping the tab to change the view rather than pressing buttons within the view.
It might be worth you looking into a UINavigationController
The first thing, you are implementing UITabBarController. you don't have to create a back button, because user can navigate between screens by tap on tab bar.
Second thing, you can use UINavigationController to manage you viewControllers,the Back button will automatically show when you push ViewController by method pushViewController:animated:

ios deleteconformation button

I have a table which has a couple of rows.I have two custom buttons on the cell .One of them is used to delete the row. I am trying to get the delete conformation button which is normally displayed on swipe to delete gesture on the row using the custom button press.
can someone please suggest a solution for the above problem.
thanks.
in short i want to replace the swipe gesture by a button press to make the framework provided delete button appear
Can you elaborate? It's not clear to me whether you want to replace the behaviour of the regular swipe-to-make-delete-button-appear (and if so, sounds like you might be reinventing the wheel), or if you want to have a swipe just automatically call your own delete button?
EDIT
Based on your comment, I think you want what's already posted here: Is it possible to programmatically show the red delete button on a UITableViewCell?

Is there a way to control the NSMenuItem item that is initially highlighted when opening a menu?

I'm working on the details of a symbols pop up button, similar to what Xcode 3 at the top of its editor window.
My controller object is the delegate of the NSMenu that is shown when the NSPopUpButton is shown. I implement the two methods numberOfItemsInMenu: and menu:updateItem:atIndex:shouldCancel: to populate the menu right before it's about to be displayed.
However, the title and image of the selected NSMenuItem have to change each time the user changes the selection in the editor NSTextView, or makes changes to the text; just as is the case with Xcode.
The problem I'm having is when the user goes to click on the NSPopUpButton to display the NSMenu, the selected NSMenuItem and the item that should be selected do not match up, since the menu doesn't have the proper number of items yet.
I'm wondering if there is a way to control which NSMenuItem is initially highlighted and tracked when the user clicks to open the menu. As it stands, the first item it always highlighted and tracked or, if the user had previously selected a item, that item is highlighted and tracked.
I tried explaining as best I could, but here is a image illustrating my problem:
I want the highlighted item to be the same as the selected item when the user opens the menu. Any ideas?
I would use a NSPopupbutton - it can do what you want. maybe you even hide it?
I am not very sure that I understood your problem but If we can add tags to these menu Items.
e.g.
[mMenuItemOne setTag : 1];
[mMenuItemTwo setTag : 2];
[mMenuItemThree setTag : 3];
[mMenuItemFour setTag : 4];}
we can select any Menu item using
[_popUp selectItemWithTag: _selectedItem];
Just a hint not a full solution.
Try to post an NSMouseMoved event to your app right after the menu shown.
Main problem is here to detect the position of the item you want to be highlighted.
Just a starting point.
Have you tried this NSMenuDelegate method:Handling Highlighting
– menu:willHighlightItem:
NSMenuDelegate Protocol Reference
Also you can store the NSMenuItem index in some var to keep track of the selected item for later use.
I'm not sure, do you want to move the mouse selection highlight (the blue stuff) or the checkmark?
In general, the checkmark is the thing you want to change. You can do so from your validateMenuItem: method (or at any other time if your item is set not to take part in validation) using the -setState: method.
The blue highlight is an indicator of the user's keyboard input or mouse location, and you should not mess with it. Changing it does not make any sense, as it would be changed back the moment the user moves the mouse even a single pixel.
That said, you can set the selectedItem of the NSPopUpButton, which will cause the entire menu to be moved so the selectedItem is under the mouse (assuming the mouse just clicked the popup button).
If your menu delegate method is called after the pop up button has decided what item to select, you can't use it. Instead, you could probably set the selectedItem and menu of the popup button from a NSPopUpButtonWillPopUpNotification handler.
If that is also called too late, you'll probably have to subclass NSPopupButtonCell and do it in an override of -attachPopUpWithFrame:inView: (I think that's the spot that should also work when you don't click and just hit the space key while the popup button is selected).

adding an invisible button to the background in IB

I'm working with Xcode doing a Ipad app.
i simply want user to click anywhere on screen (not counting text fields) to perform some IBAction.I'm using an invisible button that covers my whole view.
Since I have some text fields in my view,i need to add this invisible button to the background of my user interface. I cant seem to find this option in the button attributes? any help?
Just set the button's type to custom.
Did you try setting the opacity of the button to zero?
I guess i got your point. You just want to put the UIButton(invisible) on the back of all the UITextField. The simple solution to this is open the Document Window in the IB. Now expand the view tree in the list view. Just drag your UIButton above the UITextFields and set the alpha value for the button in the property to be zero.
Hope this helps!!
iPad users don't "click". They "tap" or "touch".
In Interface Builder, I believe views are constructed with a z-index from top to bottom as they appear in the document window, so dragging your button so that it appears as the first subview of your main view should be a quick fix for this.
Have you considered other approaches? This doesn't sound like standard behaviour for an app and will probably cause havoc with anybody using Voice Over. What are you trying to accomplish?

Animating Tab Bar page switching

I'm quite confused with the whole animation stuff in iPhone SDK. I tried to study throught the SDK documentation, this website or tried googling it out without success.
I'm unable to get my scenario work.
I have single XIB file, with tab bar and a 4 tabs.
In a special event i want to switch from one page to another "in code", so I call eg: [tabController selectedIndex: 0].
I need this transition to be animated. Is there a way?
If user switches tabs manually, no animated transitions are needed
Also I have one subquestion:
In one of the tabs I have a UITableView with set of items. When user clicks any of these items, another set of items are beign shown (sort of hierarchy browser)
I tried to animate this transition using -deleteRowsAtIndexPaths:withRowAnimation: and -insertRowsAtIndexPaths:withRowAnimation:, but without luck.
Desired transition is shifting the old items set to the left side and the new items from the right side.
This is first time of my iPhone development, when I got lost even with all the forums and documentation. :)
Thanks in advance to anyone trying to help me!
As for your first question: Yes you can.
Try this link for some answer:
transition on tab bar sample code.
In short words: you should add a delegate object to handle the tab bar switching by setting the tabBarController.delegate = self.
Yet, what this forum post won't tell you is that you need to "import" some framework to do it.
First - right-click on the framework folder on the left hand list in Xcode and add an existing framework named: "QuartzCore.framework".
Than - add these lines to your tab bar holder (on .h file):
#import <QuartzCore/CAAnimation.h>
#import <QuartzCore/CAMediaTimingFunction.h>
As for your second question, try to replace the datasource (array or what ever) or create login function on the cell to replace its content.
Enjoy!
First Question: No, you can't animate tab switching. Please read Apple's Human Interface Guidelines on this. Tabs are meant to switch instantly. An animated transition would break the "tab" paradigm.
Second Question: When you tap on a row, the user does not expect other rows to disappear and new ones to appear. Instead, this sounds like a case for a UINavigationController. Please refer to Apple's sample code, specifically the UICatalog for sample code on how to implement this.